Hi, I have a code like this (TouchObj is a Node):
test = TouchObj::Create("image");
test->retain();
test->setSelectorRelease("testMethod");
Layer_1->addChild(test);
void testMethod()
{
test->removeFromParent();
Layer_2->addChild(test)
}
TouchObj has an EventListerner in the onEnter():
_listener = EventListenerTouchOneByOne::create();
_listener->onTouchBegan = CC_CALLBACK_2(TouchObj::onTouchBegan, this);
_listener->onTouchMoved = CC_CALLBACK_2(TouchObj::onTouchMoved, this);
_listener->onTouchEnded = CC_CALLBACK_2(TouchObj::onTouchEnded, this);
_listener->onTouchCancelled = CC_CALLBACK_2(TouchObj::onTouchCancelled, this);
_listener->retain();
this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(_listener, this);
With this cosa, when I try to change parent, I have an ASSERT in the CCEventDispatcher
CCASSERT(!listener->isRegistered(), "The listener has been registered.");
because isRegistered is true, infact removeEventListener is not called if the object is live.
There is a proper way to manage change parent for a Node with EventListener?
Thank you
Regards
Don