cocos2d-x笔记
在windows系统下cocos2d-x如何响应键盘事件?
在该博文中试了第二种方法,也就是利用GetAsyncKeyState函数检测按键消息,查了msdn之后发现当焦点不在当前程序上或者按键弹起的状态该函数都会返回0.因此没有使用该方法。第一种方法修改框架源文件过多,太麻烦。
这里找了一个简洁并且准确的方法
在场景头文件中声明: static void keyboardHook(UINT message, WPARAM wParam, LPARAM lParam); 并根据需要实现该函数
在场景init中调用: CCDirector::sharedDirector()->getOpenGLView()->setAccelerometerKeyHook(CCSkyLayer::keyboardHook); 设置键盘钩子
这样就可以在keyboardhook函数中处理按键信息了。
keyboardHook参数解释
举个例子当按下方向键->时:
message的值是:0x0100 也就是winuser.h里定义的WM_KEYDOWN (弹起的时候是WM_KEYUP:0x01001);
wParam的值是:0x27也就是winuser.h里定义的VK_RIGHT;
lParam包含的的信息比较多在网上找了一张图片