月別アーカイブ: 2015年12月

[cocos2d-x 3.x]子ノードをタッチした時に親ノードも反応してしまう問題

今回は親ノードから子ノードを呼び出して、子ノードで画面をタッチした時に親ノードまで反応してしまうことへの対策を記述していきます。主に、ダイアログを作成した時に使うかなと思います。

    auto listener = EventListenerTouchOneByOne::create();
    listener->setSwallowTouches(true);
    listener->onTouchBegan = [](Touch *touch, Event *event) {return true;};
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

肝心なのは2行目の

listener->setSwallowTouches(true);

です。
これが今回の目的を果たすための記述です。また、3行目にonTouchBeginを持ってくるのは、

CCASSERT(false, "Invalid EventListenerTouchOneByOne!");

とかで落ちてしまうからです。