cocos2d-x сенсорная обработка со слоями

У меня проблема с сенсорным обработчиком cocos2d-x. У меня есть два класса. У каждого класса есть одна сцена и один слой. У меня есть спрайты на обоих слоях, и они выполняют одну и ту же функцию. Проблема в том, что когда я делаю переход со слоя A на слой B и щелкаю по спрайту, обработчик касаний получает спрайт со слоя A, но мне нужен спрайт со слоя B, очевидно, что я нажимаю на слой B. Насколько я понял , проблема в setPriority? Не могли бы вы помочь мне решить эту проблему? Спасибо

CardItem мой спрайт

void CardItem::addEvents()
{
auto listener = cocos2d::EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);

listener->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event)
{
cocos2d::Vec2 p = touch->getLocation();
cocos2d::Rect rect = this->getBoundingBox();

if(rect.containsPoint(p))
{
return true; // to indicate that we have consumed it.
}return false; // we did not consume this event, pass thru.

};
listener->onTouchEnded = [=](cocos2d::Touch* touch, cocos2d::Event* event)
{
//I have here some code
};
cocos2d::Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 30);
}

void CardItem::touchEvent(cocos2d::Touch* touch, cocos2d::Vec2 _point)
{
auto *pNode = this->getParent(); // here is "pNode" always gets layer A
}

вот как я меняю сцены между слоями A и B

void GameBoardLayer::showGameBoardComputer()
{
pGameBoardComputerScene = GameBoardComputerScene::create();
auto pGameBoardComputerLayer = pGameBoardComputerScene->getLayer();
Director::getInstance()->pushScene(pGameBoardComputerScene);
}

void GameBoardComputerLayer::gameBoardComputerItemBackCallback(Ref* pSender)
{
Director::getInstance()->popScene();
}

поэтому, когда я нажимаю на спрайт, независимо от того, какой это слой, он всегда нажимает на слой от A до слоя B

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]