首先在AppDelegate.cpp加入以下代码,一定要在AppDelegate::applicationDidFinishLaunching()上,声明用的。
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
- HelloWorld*g_layer;
-
- voidWin32SetKeyLayer(HelloWorld*layer)
- {
- g_layer=layer;
- }
-
- voidWin32KeyHook(UINTmessage,WPARAMwParam,LPARAMlParam)
- {
- CCLog("Win32KeyHookmessage%dwParam%dlParam%d",message,wParam,lParam);
- if(g_layer)
- g_layer->onWin32KeyEvent(message,lParam);
- }
- #endif
在AppDelegate::applicationDidFinishLaunching()中
copy
boolAppDelegate::applicationDidFinishLaunching(){
- //initializedirector
- CCDirector*pDirector=CCDirector::sharedDirector();
- CCEGLView*pEGLView=CCEGLView::sharedOpenGLView();
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
- //2012.11.07加入键盘处理代码
- pEGLView->setAccelerometerKeyHook(Win32KeyHook);///////////////////////////////////
- #endif//CC_PLATFORM_WIN32
- pDirector->setOpenGLView(pEGLView);
- //turnondisplayFPS
- pDirector->setDisplayStats(true);
- //setFPS.thedefaultvalueis1.0/60ifyoudon'tcallthis
- >setAnimationInterval(1.0/60);
- //createascene.it'sanautoreleaSEObject
- CCScene*pScene=HelloWorld::scene();
- //run
- >runWithScene(pScene);
- returntrue;
- }
在HelloWorldScene.cpp中
copy
CCScene*HelloWorld::scene()
- //'scene'isanautoreleaSEObject
- CCScene*scene=CCScene::create();
- //'layer'isanautoreleaSEObject
- HelloWorld*layer=HelloWorld::create();
- //addlayerasachildtoscene
- scene->addChild(layer);
- externvoidWin32SetKeyLayer(HelloWorld*layer);
- Win32SetKeyLayer(layer);
- //returnthescene
- returnscene;
- }
voidHelloWorld::onWin32KeyEvent(UINTmessage,LPARAMlParam)
- CCLog("onWin32KeyEventmessage%dwParam%dlParam%d",lParam);
- /*
- //Up
- Win32KeyHookmessage256wParam38lParam21495809
- onWin32KeyEventmessage256wParam38lParam21495809
- Win32KeyHookmessage257wParam38lParam-1052246015
- onWin32KeyEventmessage257wParam38lParam-1052246015
- //Down
- Win32KeyHookmessage256wParam40lParam22020097
- onWin32KeyEventmessage256wParam40lParam22020097
- Win32KeyHookmessage257wParam40lParam-1051721727
- onWin32KeyEventmessage257wParam40lParam-1051721727
- //Left
- Win32KeyHookmessage256wParam37lParam21692417
- onWin32KeyEventmessage256wParam37lParam21692417
- Win32KeyHookmessage257wParam37lParam-1052049407
- onWin32KeyEventmessage257wParam37lParam-1052049407
- //Right
- Win32KeyHookmessage256wParam39lParam21823489
- onWin32KeyEventmessage256wParam39lParam21823489
- Win32KeyHookmessage257wParam39lParam-1051918335
- onWin32KeyEventmessage257wParam39lParam-1051918335
- */
- if(message==256)
- switch(wParam)
- case38:
- moveHero(1);
- break;
- case40:
- moveHero(2);
- break;
- case37:
- moveHero(3);
- case39:
- moveHero(4);
- elseif(message==257)
- copy
voidHelloWorld::moveHero(intdiraction)
- CCLog("moveHero:%d",diraction);
-
//现在你就可以上下左右键,看输出的值。
http://www.vktone.com/articles/win32_key_process_in_cocos2dx.html (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|