是否可以在移动操作期间更改CCSprite's
位置,例如CCMoveBy?
我有一个CCSprite
的子类,它循环执行一系列操作,其中一些是移动。我检查它是否已经离屏,然后尝试将其直接移动到屏幕的另一侧。因此,如果它向左移动一半向左移动,它将从屏幕右侧完成移动。
但如果我使用setPosition:
它似乎不起作用,它只是完成它的移动动作。
答案 0 :(得分:3)
CCMoveTo
(其中CCMoveBy
是其子类)存储对象的初始位置,并在每次更新时向该存储位置添加增量,因此任何其他位置设置都将毫无意义下一次更新会让它回到旧路上。
您可以更改代码以使用两个CCMoveTo
操作 - 一个将对象关闭屏幕,另一个将其从另一侧移回。或者,您可以创建自己的操作(如果您不确定如何完成,请查看CCMoveTo
的{{3}}。
答案 1 :(得分:1)
[sprite stopAllActions];
sprite.position = rightSideOfScreen;
[sprite runAction:newMoveToLeftAction];
这应该是我期望的。如果你真的需要“继续行动”而不是开始一个新动作,那么你将不得不获得动作运行的时间,并以应该剩下的时间开始新动作。