cocos2d-x接受键盘事件,左右键

news/2025/3/14 17:08:41/

原文地址: http://www.vktone.com/articles/win32_key_process_in_cocos2dx.html


首先在AppDelegate.cpp加入以下代码,一定要在AppDelegate::applicationDidFinishLaunching()上,声明用的。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
HelloWorld *g_layer;void Win32SetKeyLayer(HelloWorld *layer)
{g_layer = layer;
}void Win32KeyHook( UINT message,WPARAM wParam, LPARAM lParam )
{CCLog("Win32KeyHook message %d wParam %d lParam %d", message, wParam, lParam);if (g_layer)g_layer->onWin32KeyEvent(message, wParam, lParam);
}
#endif

在AppDelegate::applicationDidFinishLaunching()中

bool AppDelegate::applicationDidFinishLaunching() {// initialize directorCCDirector* pDirector = CCDirector::sharedDirector();CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)// 2012.11.07 加入键盘处理代码pEGLView->setAccelerometerKeyHook(Win32KeyHook);///
#endif  // CC_PLATFORM_WIN32pDirector->setOpenGLView(pEGLView);// turn on display FPSpDirector->setDisplayStats(true);// set FPS. the default value is 1.0/60 if you don't call thispDirector->setAnimationInterval(1.0 / 60);// create a scene. it's an autorelease objectCCScene *pScene = HelloWorld::scene();// runpDirector->runWithScene(pScene);return true;
}

在HelloWorldScene.cpp中

CCScene* HelloWorld::scene()
{// 'scene' is an autorelease objectCCScene *scene = CCScene::create();// 'layer' is an autorelease objectHelloWorld *layer = HelloWorld::create();// add layer as a child to scenescene->addChild(layer);extern void Win32SetKeyLayer(HelloWorld *layer);Win32SetKeyLayer(layer);// return the scenereturn scene;
}

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
void HelloWorld::onWin32KeyEvent( UINT message,WPARAM wParam, LPARAM lParam )
{CCLog("onWin32KeyEvent message %d wParam %d lParam %d", message, wParam, lParam);/*// UpWin32KeyHook message 256 wParam 38 lParam 21495809onWin32KeyEvent message 256 wParam 38 lParam 21495809Win32KeyHook message 257 wParam 38 lParam -1052246015onWin32KeyEvent message 257 wParam 38 lParam -1052246015// DownWin32KeyHook message 256 wParam 40 lParam 22020097onWin32KeyEvent message 256 wParam 40 lParam 22020097Win32KeyHook message 257 wParam 40 lParam -1051721727onWin32KeyEvent message 257 wParam 40 lParam -1051721727// LeftWin32KeyHook message 256 wParam 37 lParam 21692417onWin32KeyEvent message 256 wParam 37 lParam 21692417Win32KeyHook message 257 wParam 37 lParam -1052049407onWin32KeyEvent message 257 wParam 37 lParam -1052049407// RightWin32KeyHook message 256 wParam 39 lParam 21823489onWin32KeyEvent message 256 wParam 39 lParam 21823489Win32KeyHook message 257 wParam 39 lParam -1051918335onWin32KeyEvent message 257 wParam 39 lParam -1051918335*/if (message == 256){switch (wParam){case 38:moveHero(1);break;case 40:moveHero(2);break;case 37:moveHero(3);break;case 39:moveHero(4);break;}}else if (message == 257){}
}
#endif

void HelloWorld::moveHero( int diraction )
{CCLog("moveHero: %d",diraction);
}

//现在你就可以上下左右键,看输出的值。





http://www.ppmy.cn/news/659191.html

相关文章

苹果Mac OS X的快捷键

译注:在以下的列表中,「opt」为键盘上「Option键」的简称、「cmd」是「Command键」、「ctrl」则是「Control键」的简称。作者表示所有按键都经过实验,但译者并没有亲自使用过所有的按键组合,所以本文内容仅供参考;如果…

修改键

虽然鼠标事件主要是使用鼠标来触发的,但在按下鼠标时键盘上的某些键的状态也可以影响到所要采取的操作。这些修改键就是Shift、Ctrl、Alt和Meta(在Windows键盘中是Windows键,在苹果机中是Cmd键),它们经常被用来修改鼠标…

Mac 2016 运行Emacs,M-x键失效问题(二十五)

入手了Mac,发现安装emacs后M -x不能用,百度无果后自己折腾一番,将配置记录下来,方便后来人 1、打开终端 ----->终端 ----->偏好设置 ------>描述文件 ------>键盘 ------->使用Option键作为Meta键 2、将command设置为option…

Python中的排序sorted(d.items(), key=lambda x: x[1]) 详解 用 字节的键 或 值 排序

‘’’ 参考链接:https://blog.csdn.net/Jeffxu_lib/article/details/88650431 Python中的排序sorted(d.items(), keylambda x: x[1]) ‘’’ 1、Python中对键值对进行输出和排序 d {‘a’: 24, ‘g’: 52, ‘i’: 12, ‘k’: 33} 以列表形式输出字典d的key b1…

08-OS X系统中将control和command键互换

http://jingyan.baidu.com/article/c85b7a64187eda003aac9541.html 苹果Mac OS X怎样设置/调整Ctrl/Option/Command快捷键的按键位置 和设置鼠标滚轮滑动方向一样,这也是一个windows转MAC OS X的一个习惯问题,当然我们也可以不借助任何第三方软件的情况下…

小问题——mobile中OK键替换X键

vs2005用win32写界面程序,有个小问题,就是wm5.0上的X键一开始就生成了,并且代表最小化,而不是退出程序。所以想替换成OK键,直接关闭程序。 在WM5.0右上角的有2种按钮,叉和OK,叉代表最小化&#…

PolarDB-X 拆分键推荐

前言 PolarDB-X2.0提供了透明分布式的能力,默认进行主键拆分,让用户无感知的从单机数据库迁移到分布式数据库。拆分键的选择是学术界和工业界研究已久的问题,一个重要选型是tp优先还是ap优先,两者难以同时兼顾。tp优先[1]的目的是…

cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案

游戏暂停界面: cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动暂停,然后我们可以在暂停场景中操作,如Resume&#…