如何在移动动作期间更改Sprite的位置

时间:2011-07-10 21:51:33

标签: cocos2d-iphone ccsprite ccaction

是否可以在移动操作期间更改CCSprite's位置,例如CCMoveBy?我有一个CCSprite的子类,它循环执行一系列操作,其中一些是移动。我检查它是否已经离屏,然后尝试将其直接移动到屏幕的另一侧。因此,如果它向左移动一半向左移动,它将从屏幕右侧完成移动。

但如果我使用setPosition:它似乎不起作用,它只是完成它的移动动作。

2 个答案:

答案 0 :(得分:3)

CCMoveTo(其中CCMoveBy是其子类)存储对象的初始位置,并在每次更新时向该存储位置添加增量,因此任何其他位置设置都将毫无意义下一次更新会让它回到旧路上。

您可以更改代码以使用两个CCMoveTo操作 - 一个将对象关闭屏幕,另一个将其从另一侧移回。或者,您可以创建自己的操作(如果您不确定如何完成,请查看CCMoveTo的{​​{3}}。

答案 1 :(得分:1)

[sprite stopAllActions];
sprite.position = rightSideOfScreen;
[sprite runAction:newMoveToLeftAction];

这应该是我期望的。如果你真的需要“继续行动”而不是开始一个新动作,那么你将不得不获得动作运行的时间,并以应该剩下的时间开始新动作。