版本:cocos2d-x-3.3rc0
情况:创建两个带触摸的sprite,当我点中一个不放手,在点另外一个,另外一个也会响应触摸事件,
设备:ipad 2
求关注,求解答 谢谢
Sprite * sprite1 = Sprite::create("button_close.png");
this->addChild(sprite1);
sprite1->setPosition(200,300);
Sprite * sprite2 = Sprite::create("button_close.png");
this->addChild(sprite2);
sprite1->setPosition(400,300);
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = =](Touch* touch, Event* event){
auto target = static_cast<Sprite*>(event->getCurrentTarget());
Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
Size s = target->getContentSize();
Rect rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode))
{
CCLOG("onTouchBegan");
return true;
}
return false;
};
listener->onTouchEnded = =](Touch* touch, Event* event){
auto target = static_cast<Sprite*>(event->getCurrentTarget());
target->stopAllActions();
ScaleTo * sb1 = ScaleTo::create(0.1f, scale*1.0);
target->runAction(sb1);
Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
Size s = target->getContentSize();
Rect rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode))
{
CCLOG("onTouchEnded");
}
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, sprite1);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), sprite1);