很新很新的新手,请教各位老鸟一个问题,希望有人回答

如果onTouchMoved的点在精灵的getBoundingBox上,并且精灵没标记选中,就标记这个box被选中了,如果onTouchMoved的点在box的getBoundingBox上但是box已经被选中了就把这个box取消选中

if (box->getBoundingBox().containsPoint(t->getLocation()))
            {
                if (!box->get_selected())
                {
                    box->set_selected(true);
                }
                else
                {
                    box->set_selected(false);
                }
            }


```

由于在滑动的过程中onTouchMoved会执行很多次,所以在一个getBoundingBox上会不停的执行选择、取消选择.....,而不能达到需要的效果,该怎么做能实现?求知心很急切,在线等!!!

可以把改变选中状态的代码移到touchBegan或者touchEnded里

如果一定是在move的过程中改变并且只改变一次
可以增加一个bool变量 hasStateChanged 用来记录在此次触摸过程中是否改变过选中状态
这个bool变量在touchBegan时初始化 hasStateChanged = false
在move时需要多判断一次
if (box->getBoundingBox().containsPoint(t->getLocation()))
{
if (!hasStateChanged)
{
hasStateChanged = true;
if (!box->get_selected())
{
box->set_selected(true);
}
else
{
box->set_selected(false);
}
}
}

多谢指点。 不过这样做无论怎么touchMove始终只能选到第一个

最好还是在 touchBegan或者touchEnded里 处理就行了吧

你这是逻辑问题,不是引擎问题,如果你一定要在move里边做,那就每个box被选中或取消一次后,标记一下,此次move下,不再二次操作。move end里边清空所有标记。