cocos2dx之游戏的按键事件处理
2014-09-21 18:01
225 查看
1.首先实现
virtual void update(float delta);这个虚函数
在初始化过程中添加代码 scheduleUpdate();
这样就实现了游戏过程中不断跟新某事件。里面要添加什么事件的处理?
因为我们实现按键的事件,当然在里面实现按键的事件处理
然后在场景头文件中添加以下代码
在刚才的update函数里面添加处理。如下面的
这就实现了按键事件的处理。还有注意,此方法采用hook技术,所以在当你的游戏窗口失去
焦点时一样能操作游戏按键,所以需要特殊处理。
还有一种方法,就是通过setAccelerometerKeyHook(Win32KeyHook);这个函数操作,
但是不推荐,为什么?因为我们在cocos2dx中刷新画面的效率不同步于windows处理按钮事件的处理
会导致你不停按下一个键的时候,一段时间都不会更新你的精灵的坐标。
所以,采用此方法,最好是处理与图像刷新无关的事件。当然,这个方法特殊处理,也可以实现同步,
不然cocos2dx也根本无法做到此效果。
转载注明by-bojie,并添加地址
virtual void update(float delta);这个虚函数
在初始化过程中添加代码 scheduleUpdate();
这样就实现了游戏过程中不断跟新某事件。里面要添加什么事件的处理?
因为我们实现按键的事件,当然在里面实现按键的事件处理
然后在场景头文件中添加以下代码
#include <windows.h> #define KEY_DOWN(vk_code) (GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0) #define KEY_UP(vk_code) (GetAsyncKeyState(vk_code) & 0x8000 ? 0 : 1)
在刚才的update函数里面添加处理。如下面的
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) if (KEY_DOWN(VK_LEFT) || KEY_DOWN('S')) { MessageBox(0,0,0,0); } #endif
这就实现了按键事件的处理。还有注意,此方法采用hook技术,所以在当你的游戏窗口失去
焦点时一样能操作游戏按键,所以需要特殊处理。
还有一种方法,就是通过setAccelerometerKeyHook(Win32KeyHook);这个函数操作,
但是不推荐,为什么?因为我们在cocos2dx中刷新画面的效率不同步于windows处理按钮事件的处理
会导致你不停按下一个键的时候,一段时间都不会更新你的精灵的坐标。
所以,采用此方法,最好是处理与图像刷新无关的事件。当然,这个方法特殊处理,也可以实现同步,
不然cocos2dx也根本无法做到此效果。
转载注明by-bojie,并添加地址
相关文章推荐
- Cocos2dx事件处理机制之按键事件
- Android游戏开发教程之十四:按键中断事件的处理
- Android游戏开发框架(四)按键事件处理
- cocos2dx游戏开发事件处理机制
- 按键事件的处理
- 【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
- 在网页处理按键事件
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- ListView的长按键事件的处理
- BREW按键及其他事件的处理
- Android游戏开发之处理按键的响应方式(二十二)
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- Android游戏开发之旅(十五) 按键中断处理
- Android面面观——Android事件处理下(按键、触摸屏和滚动球的一些实现细节
- 关于symbian按键事件的一些总结(2)----------按键事件的处理
- 串口操作的异步实现:仿照MIDP2.0按键事件处理方法
- 通过一个游戏编程熟悉事件处理
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- Android游戏开发之处理按键的响应方式(二十二)
- J2ME游戏按键处理方法简述