如题:
就像cocos2d:
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = CC_CALLBACK_2(KeyboardTest::onKeyPressed, this);
listener->onKeyReleased = CC_CALLBACK_2(KeyboardTest::onKeyReleased, this);
如题:
就像cocos2d:
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = CC_CALLBACK_2(KeyboardTest::onKeyPressed, this);
listener->onKeyReleased = CC_CALLBACK_2(KeyboardTest::onKeyReleased, this);
用addNodeEventListener接口
么有添加到监听器里面??
director->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 100);
self.layer:addNodeEventListener(cc.KEYPAD_EVENT, function (event)
self:keyBoardEvent(event)
end)
这样添加的监听事件,监听不到键盘的按下和释放
这个能监听到键盘的按下和释放吗?
谢谢 yinjimmy ,
请问dump(event)函数你是怎么写的,能贴出来看一下吗,比如按下键盘左键和松开键盘左键,这个怎么监听
= =
你这要监听的是 Android 上的键盘事件还是 pc/mac 上的键盘的按键消息 ?
据文档 docs/manual/events/zh.html 介绍
键盘事件
键盘事件当前仅在 Android 设备上有效,可以得到用户按下 Menu 和 Back 键时的消息:
local node = display.newNode()
node:addNodeEventListener(cc.KEYPAD_EVENT, function(event)
print(event.name)
end)
scene:addChild(node)
yinjimmy,在pc上不能监听按键的按下和松开吗,
我想用quick3.2实现一个精灵,按下键盘左键之后,精灵就想左一直移动,当松开左键时,精灵就不移动,
这个只能监听按键的按下和松开事件才行呀,不然怎么办呢
local listener = cc.EventListenerKeyboard:create()
listener:registerScriptHandler(function (keyCode) print("press keyCode:", keyCode) end, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(function (keyCode) print("release keyCode:", keyCode) end, cc.Handler.EVENT_KEYBOARD_RELEASED)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1)
谢谢大神,为什么我用这段代码体会报错:
local listener = cc.EventListenerKeyboard:create()
listener:registerScriptHandler(function (keyCode) print("keyCode:", keyCode) end, cc.Handler.EVENT_KEYBOARD_PRESSED)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1)
```
提示:attempt to index field 'EventListenerKeyboard' (a nil value)
难道要包含什么文件吗?我用的是quick cocos2d-x 3.2
3.2去掉了cc.EventListenerKeyboard,3.3才恢复。
用addNodeEventListener可以的,你再查一下。
local layer=display.newLayer()
layer:addTo(self)
layer:setKeypadEnabled(true)
layer:addNodeEventListener(cc.KEYPAD_EVENT, function (event)
dump(event)
if event.key == "back" then
print("back")
elseif event.key == "menu" then
print("menu")
end
end)







大牛,你这个也只能监听到按键事件,并不能监听按下和松开按键的事件呀
哦,你要分开监听按下和松开按键,用3.2确实不行了,除非是自己对C++做一些修改。或者直接用3.3吧。
3.3,怎么实现呢,好像代码要报错
3.3你用8楼的代码不会有问题的
试了一下3.3,真心蛋疼,创建项目都失败。。。。
3.3rc0需要先安装和配置好cocos2dx 3.3的。
明天rc1出来就没这么麻烦了,稍等一下吧。
嗯,谢谢大神
解决了没