我在一个layer里面注册了一个事件,代码如下
auto touchListener = EventListenerTouchOneByOne::create();
touchListener->setSwallowTouches(false);
touchListener->onTouchEnded = ](Touch *touch, Event *event) {
Scene *st = Scene::create();
BackgroundLayer *back = BackgroundLayer::create();
st->addChild(back);
Director::getInstance()->replaceScene(st);
return; };
touchListener->onTouchMoved = ](Touch* touch, Event* event){ return; };
touchListener->onTouchBegan = ](Touch *touch, Event *event) { return true; };
_eventDispatcher->addEventListenerWithFixedPriority(touchListener, -1);
但是当我切换了下一个场景的时候,这个时候该layer的析构函数已经调用,但是在下一个场景居然还可以响应这个事件,导致每一次点击就创建一次新的场景,除非我在layer的析构函数里面调用
_eventDispatcher->removeAllEventListeners();函数,事件才不会继续响应了。
但是如果这样,我不是会把其他layer注册的事件也一起清除。
这个应该怎么办,我也不可能在layer里面保存每一个注册的事件,然后再析构函数里面再一个一个删除吧。