键盘的按下或者松开事件都是可以单独检测的,目前代码
bool HelloWorld::init(){
//省略
auto listenerKeyboard = EventListenerKeyboard::create();
listenerKeyboard->onKeyPressed = CC_CALLBACK_2(HelloWorld::onKeyPressed, this);
listenerKeyboard->onKeyReleased = CC_CALLBACK_2(HelloWorld::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listenerKeyboard, this);
//省略
void HelloWorld::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
{
//省略
}
差不多这样一个情况,我放置了一个sprite,onKeyPressed里面实现的是按下方向键sprite会向一个方向移动10个单位
问题是如果按住方向键的话只有一次onKeyPressed能触发,如果让Sprite保持移动需要不停的按方向键
向各位大牛求教,有木有什么方法可以检测到按住或者实现类似的机理?
一个简单地笨办法就是:
用一个
bool keyState
来记录这个键的按下状态,如果true
代表按下否则代表没按下。然后监听事件:按下的时候设置这个
keyState
为true
,弹起的时候设置为false
。那么也就是说如果为true
的话,这个键就是处于按下状态。最后,自己可以实现这么一整套机制,然后弄出一个全局的按键状态表。
至于 Cocos2dx 原生有没有实现方法,我不知道——因为我不是写 Cocos2dx 的啊。
希望能够抛砖引玉。
以上。