#タッチイベント
登録
TestNode.cpp
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(TestNode::onTouchBegan, this);
listener->onTouchEnded = CC_CALLBACK_2(TestNode::onTouchEnded, this);
getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
解除
getEventDispatcher()->removeEventListenersForTarget(this);
NodeのデストラクタでremoveEventListenersForTarget(this)が呼ばれるため、
通常は自分で解除する必要はない。
#カスタムイベント
登録
_listenerCustom = getEventDispatcher()->addCustomEventListener("test", CC_CALLBACK_1(TestNode::customEventCallback, this));
解除
getEventDispatcher()->removeEventListener(_listenerCustom);
この方法で登録したカスタムイベントリスナーはremoveEventListenersForTargetでは解除されないので、addCustomEventListenerが返すEventListenerCustomのポインタを持っておいて、解除する時に指定する。
または、EventListenerCustomを作ってから、addEventListenerWithSceneGraphPriorityで登録すれば、removeEventListenersForTargetで解除されるようになり、自分で解除する必要がなくなる。
EventListenerCustom* listenerCustom =
EventListenerCustom::create("test2", [](EventCustom* event){
CCLOG("test2");
});
_eventDispatcher->addEventListenerWithSceneGraphPriority(listenerCustom, this);