У меня проблема с сенсорным обработчиком 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
Задача ещё не решена.