多个Sprite部分重叠在一起,当触摸时如何令只有最顶的Sprite响应??用的是3.4版本
直接注册精灵触摸:
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(m_touchListener, sprite);
然后在触摸回调函数里面:
m_touchListener->onTouchBegan = (Touch* touch, Event* event){
auto target = event->getCurrentTarget();
Point locationInNode = target->convertToNodeSpace(touch->getLocation());
Rect rect = Rect(0, 0, target->getContentSize().width, target->getContentSize().height);
if (rect.containsPoint(locationInNode))
{
auto sp = dynamic_cast<Sprite*>(target); //sp就是注册的那个精灵
if (! sp) {
return true;
}
log("sprite card touch... x = %f, y = %f, cardIndex=%d", locationInNode.x, locationInNode.y, sp->getTag());
return true;
}
return false;
};