您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx之游戏的按键事件处理

2014-09-21 18:01 225 查看
1.首先实现

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,并添加地址


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: