Как изменить позицию CCSprite во время действия перемещения - PullRequest
1 голос
/ 11 июля 2011

Можно ли изменить позицию CCSprite's во время действия перемещения, например CCMoveBy? У меня есть подкласс CCSprite, который циклически проходит через множество действий, некоторые из которых являются движениями. Я проверяю, ушел ли он за экран, и затем пытаюсь переместить его прямо на противоположную сторону экрана. Так что, если он переместился за пределы экрана в середине движения влево, он закончил бы движение с правой стороны экрана.

Но если я использую setPosition:, это не похоже на работу, оно просто завершает действие перемещения.

Ответы [ 2 ]

3 голосов
/ 11 июля 2011

CCMoveTo (который CCMoveBy является подклассом) хранит начальную позицию объекта и добавляет дельту к этой сохраненной позиции при каждом обновлении, поэтому любая другая настройка позиции будет бессмысленной, так как при следующем обновлениион возвращается по старому пути.

Вы можете изменить свой код, чтобы использовать два CCMoveTo действия - одно, убирающее объект с экрана, а другое, чтобы переместить его обратно с другой стороны.Кроме того, вы можете создать свое собственное действие (посмотрите на исходный код для CCMoveTo, если вы не уверены, как это делается).

1 голос
/ 11 июля 2011
[sprite stopAllActions];
sprite.position = rightSideOfScreen;
[sprite runAction:newMoveToLeftAction];

Это должно сработать, я ожидаю.Если вам действительно нужно «продолжить действие» и не начинать новое, вам нужно будет узнать, как долго это действие было запущено, и начать новое действие с количеством времени, которое должно было остаться.

...