Scene切换后 UI控件的Touche事件恢复问题

环境:
cocos2d-js 3.0 rc3
cocoStudio 1.6

前提:有两个场景A和B,可以互相切换。
场景切换时不会重新new 新的场景,也就是说不论怎么切换每个场景只有一个对象。

A中有一个按钮button,是用UI Editor创建,并导入到工程当中。
在初始化时,用代码给button追加了一个点击事件
button.addTouchEventListener…

问题:
当从A切换到B,再切换回A时,因为eventManager自动被清空,所以button的点击事件也就不再相应了。
目前的解决办法是,在场景A的onEnter事件中,加入如下代码:
button.setTouchEnabled(false);
button.setTouchEnabled(true);

以上方法可以解决,但不知道是不是标准用法,或者有没有其他思路,请给点建议。

延伸:
cc.MenuItem,这个类的用法跟ccui.button类似,但不属于UI范围。
这个类不论场景如何切换,点击事件始终都不会自动消失。
请问内部机制有什么不同?
为什么UI系列的控件不用同样的设计呢?

来论坛第一次发帖就沉了,寂寞

中秋节快乐
1234567890

Widget类只有在析构的时候才会移除touchlistener,楼主说的eventManager是什么,是自己的事件管理吗
Node在pause时会从eventdipatcher中移除自身,resume时会重新添加自身
ui事件每次分发时会取Director::getInstance()->getRunningScene()作为rootNode重新生成nodelistener数组

你好,感谢回复
eventManager并非我自己的事件管理器,是cocos2d-js 中的 cc.eventManager。
我对cocos2d内部代码并不了解,也许说eventManager并不恰当,但在场景切换后控件的事件确实不会再自动响应了。

另,我在英文官网上看cocos2d-js 的release note,里面只提到 3.0的rc1是跟studio的1.3相匹配的,但并没有提到rc2和rc3与哪个studio版本匹配。我现在用的是studio1.6,会不会是版本不匹配的原因?

cocos2d-js没用过。。我们这用的是c++的3.2和cocostudio1.6开发的,你说的问题还没有遇到过,可以试试最新的版本,毕竟相对旧版本修了不少bug。