お世話になっております。
しゃまとんです。

レイヤーを複数に分けていて、あるレイヤーのタッチ処理を切り分けたかったのですが、 検索してもあまり出てこなかったので、実装できた際のメモです。

cocos2d-xのver3.7での実装例です。

レイヤーにてタッチ処理を登録して、処理の優先度をあげておくと、仮にレイヤーをsetVisible(false)にしても、 優先度をあげた方が呼ばれてしまいうまくいかなかったため、登録を外すようにしてレイヤーを非表示にするようにしました。

下記は関数化されていますが、trueで呼ぶとタッチ処理をレイヤーに登録し、falseで呼ぶと切り離すようになっています。

_touchListenerとか_eventDispatcherとか存在してたんですね。知らなかった。。

void HelloWorld::setTouchListener(bool enabled)
{
    if (enabled) {
        _touchListener = EventListenerTouchAllAtOnce::create();
        _touchListener->retain();
        _touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
        _eventDispatcher->addEventListenerWithSceneGraphPriority(_touchListener, this);
    }
    else {
        _eventDispatcher->removeEventListener(_touchListener);
        _touchListener->release();
        _touchListener = nullptr;
    }
}

以上です。