Creator_v1.4 eventManager.pauseTarget不起作用

Creator_v1.4 升级之后
cc.eventManager.addListener 注册了 cc.EventListener.KEYBOARD之后,
立即cc.eventManager.pauseTarget(node, true);
在 web上面可以正常屏蔽 键盘事件响应,
但是在 Android Native环境上无法屏蔽事件!

代码如下:

    onLoad: function () {
        this.addListener(this.item0);
        this.addListener(this.item1);
        this.addListener(this.item2);
    },

    addListener: function (node) {
        cc.eventManager.addListener({
            event: cc.EventListener.KEYBOARD,
            onKeyPressed: (keyCode, event) => {
                this.onKeyDown(keyCode);
            },
            onKeyReleased: (keyCode, event) => {
            }
        }, node);
        cc.eventManager.pauseTarget(node, true);
    },
    
    onKeyDown:function(keyCode){
        cc.log('>>>'+keyCode);
    }

如上代码中,在web环境上 不会打印出log,而在native环境中 会打印3次log
之前在Creator_v1.3上是正常的!

求大神 喵一眼这个问题

把onload的代码放在start里试试看?

貌似遇到同样的问题

键盘事件的监听和取消监听请参考这个文档

http://cocos.com/docs/creator/scripting/player-controls.html

1.4版本不能同时监听KEY_DOWN,KEY_UP,错误信息:Simulator: Assert failed: The listener has been registered. 文档的代码已不可运行

谢谢反馈,我们查一下

这个问题的原因我看了一下,是因为在原生平台 onLoad 是由 eventManager 回调触发的,所以此时 pauseTarget 会被自动恢复,需要延迟一帧暂停,或者整体延迟一帧去注册事件(用 scheduler)

@devman 你的 simulator 有没有自己重新编译过?还是说用的是官方的版本?

1赞

1.4 官方版本

我也遇到同样的问题,就是在onLoad的时候同时监听 KEY_DOWN,KEY_UP事件时,会有Simulator: Assert failed: The listener has been registered出现。

我现在是把事件延后一帧处理,就没有这个Assert了。

嗯,我已经知道原因了,谢谢各位反馈

感谢感谢,这么晚还能看到在看论坛,感动。:grin::rose:

感谢,已经通过延迟处理了

已修复:

https://github.com/cocos-creator/engine/pull/1530