layer上有三个sprite,想让点到那个sprite就让它做一个动作,不知道为什么不管点哪里得到的都是tag=213的这个sprite?
bool HelloWorld::init()
{
if (!Layer::init())
{
return false;
}
auto sprite1 = Sprite::create("sprite1.png");
sprite1->setPosition(Vec2(100,100));
this->addChild(sprite1);
sprite1->setTag(123);
auto sprite2 = Sprite::create("sprite2.png");
sprite2->setPosition(Vec2(400, 200));
this->addChild(sprite2);
sprite2->setTag(321);
auto sprite3 = Sprite::create("sprite3.png");
sprite3->setPosition(Vec2(700, 300));
this->addChild(sprite3);
sprite3->setTag(213);
auto listen1 = EventListenerTouchOneByOne::create();
listen1->setSwallowTouches(true);
listen1->onTouchBegan = [](Touch* touch, Event* event)
{
auto target = static_cast<Sprite*>(event->getCurrentTarget());
int tag = target->getTag();
if (target->getBoundingBox().containsPoint(touch->getLocation()))
{
auto moveto = MoveBy::create(1, Vec2(100,100));
auto reverse = moveto->reverse();
target->runAction(Sequence::create(moveto,reverse,nullptr));
}
return true;
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listen1, sprite1);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listen1->clone(), sprite2);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listen1->clone(), sprite3);
return true;
}


