quick3.2能不能监听键盘的按下和释放事件

如题:

就像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)

:9::9::9::9::9::9::9:

大牛,你这个也只能监听到按键事件,并不能监听按下和松开按键的事件呀

哦,你要分开监听按下和松开按键,用3.2确实不行了,除非是自己对C++做一些修改。或者直接用3.3吧。

3.3,怎么实现呢,好像代码要报错

3.3你用8楼的代码不会有问题的

试了一下3.3,真心蛋疼,创建项目都失败。。。。

3.3rc0需要先安装和配置好cocos2dx 3.3的。
明天rc1出来就没这么麻烦了,稍等一下吧。

嗯,谢谢大神

解决了没:7: