cocos2d-x中该如何实现键盘的按住事件?

发布于 2022-08-29 16:50:35 字数 711 浏览 24 评论 0

键盘的按下或者松开事件都是可以单独检测的,目前代码

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保持移动需要不停的按方向键

向各位大牛求教,有木有什么方法可以检测到按住或者实现类似的机理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

£冰雨忧蓝° 2022-09-05 16:50:35

一个简单地笨办法就是:

用一个 bool keyState 来记录这个键的按下状态,如果 true 代表按下否则代表没按下。

然后监听事件:按下的时候设置这个 keyStatetrue,弹起的时候设置为 false。那么也就是说如果为 true 的话,这个键就是处于按下状态。

最后,自己可以实现这么一整套机制,然后弄出一个全局的按键状态表。

至于 Cocos2dx 原生有没有实现方法,我不知道——因为我不是写 Cocos2dx 的啊。

希望能够抛砖引玉。

以上。

木落 2022-09-05 16:50:35

你可以在update里面检测这个按键,如果按下就setposition,就能达到你的效果

夜清冷一曲。 2022-09-05 16:50:35

写了一篇博文,专门解决这个问题。

Cocos2d-x之监听键盘按住事件

独木成林 2022-09-05 16:50:35

在按键的onKeyPressed事件里创建一个定时器按照时间间隔delta*speed来改变sprite的坐标。
然后在onKeyReleased事件里注销这个定时器。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文