Cc.systemEvent.on重新监听KEY_DOWN无效的问题

刚学creator一周,正在写个贪吃蛇练手,在监听键盘事件时遇到没搞明白的问题。
我在组件脚本的onLoad里注册监听,cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
游戏失败时取消监听,cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
并显示“重新游戏”按钮,点击就是重新加载场景,cc.director.loadScene(‘Snake’);

第一次玩是正常的,但点击‘重新开始’后,重新加载场景就没有在监听KEY_DOWN了,看log也的确是调用到了onLoad从而有cc.systemEvent.on来重新注册监听,但是没有效果,来高手指点。

论坛好冷清,感觉cocoscreator网上资料少的可怜,几乎只能看官网文档,而官网文档目前太简略了

向你推荐这个 http://forum.cocos.com/t/creator-11-14/39917

资料挺多,我瞄下,先谢谢了

还是没搞明白重新loadScene为什么没法成功注册监听。

写一个简单可以重现问题的项目发到论坛呀,方便测试呀

也对,不过这段时间要忙其他事情了,cocoscreator要先放下了,等有时间再研究~

同问啊,顶一下

不要同问啊,最好 demo 上来,让相关人员测试,你这样一句话不好重现的, 最好是有重现的 demo…

好的,马上搞个demo,还是早上那个,呵呵

NewProject3.zip (463.1 KB)

嗯,这个已经找到问题了,在修复了,如果你等不急可以自己修改一下 engine

PR: https://github.com/cocos-creator/engine/pull/1334

@Knox
麻烦大神看一下x-lite应该是有提交没有合并到v1.3分支上去

Simulator: D:/cocos_engine/cocos2d-x-lite/simulator/win32//src/jsb_polyfill.js:12936:TypeError: cc.eventManager._getListeners is not a function

嗯,抱歉,这个是我的问题,我修复一下…

已经修复:

https://github.com/cocos-creator/engine/pull/1338
https://github.com/cocos-creator/cocos2d-x-lite/pull/425

@Knox,一个新的错误
Simulator: D:/cocos_engine/cocos2d-x-lite/simulator/win32//src/jsb_polyfill.js:12936:TypeError: cc._EventListenerKeyboard is undefined

PR: https://github.com/cocos-creator/engine/pull/1340

@Knox,遇到另外一个问题。

cc.eventManager.pauseTarget貌似不能停止cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);注册的回调,有时间也请帮忙查查看

好,我先记录一下

这个是正常的,因为 SystemEvent 注册的全局事件,所以你是无法暂停它的,除非你用 off,不过后续也可以添加一个 cc.systemEvent.pause 的函数

你好 问下 cocoscreate 2.3.3 不能监听事件 cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onExitGame, this) 什么原因导致的呢