为什么点击一个精灵,所有精灵都收到点击事件??

for (int i=0; i<imgvec.size(); i++)
{
sprintf(imgname, “%s/%s.png”,imgPath.c_str(),imgvec*.c_str());

      printf("imagename=%s",imgname);

//auto imgButton = MenuItemImage::create(imgname,imgname, CC_CALLBACK_1(ShengMuScence::imgButtonClick, this));

    auto imgButton = Sprite::create(imgname);

    auto touchListener = EventListenerTouchOneByOne::create();
    touchListener->setSwallowTouches(false);
    touchListener->onTouchBegan = CC_CALLBACK_2(ShengMuScence::onTouchBegan, this);//触摸开始
    touchListener->onTouchMoved = CC_CALLBACK_2(ShengMuScence::onTouchMoved, this);//触摸移动

_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener,imgButton);//精灵注册触摸事件

}

bool ShengScence::onTouchBegan(Touch* touch, Event* pEvent)
{
auto target = static_cast<Sprite*>(pEvent->getCurrentTarget());
int tag=target->getTag();

printf("tag=%d",tag);

见鬼
*

这个应该单独某设置某一个精灵去写,这样写肯定是全部接受的,因为所有的都在for循环里,target都一样

— Begin quote from ____

引用第1楼天人合一于2014-09-05 11:20发表的 :
这个应该单独某设置某一个精灵去写,这样写肯定是全部接受的,因为所有的都在for循环里,target都一样 http://www.cocoachina.com/bbs/job.php?action=topost&tid=227303&pid=1046931

— End quote

那应该怎样写????

你只是让每个精灵都接受触摸事件,但是接受没有做任何判断操作,也没有设置吞没触摸事件,当然会每个都接受,首先touchListener->setSwallowTouches(false);设置为true,然后在bool ShengScence::onTouchBegan(Touch* touch, Event* pEvent);方法里判断当前的点击是否点击到精灵或者是你想要的位置,如果是就返回true,否则返回false,返回true的话后边的精灵就不会接受触摸事件了