CCMoveTo *parent = [super retain];
Ой!Это утверждение не имеет абсолютно никакого смысла.Это то же самое, что написать:
[self retain];
Что касается доступа к переменным экземпляра суперкласса: если они не объявлены как @private, вы можете получить к ним доступ.Я только что проверил: они не @private.Вы должны иметь возможность написать в своем подклассе:
startPosition_.x += xpos;
Если это не сработает, убедитесь, что ваш класс действительно является подклассом CCMoveTo, а не каким-то другим классом.
Наконец,Я хотел бы сказать, что действия очень ограничены в реализации игрового процесса.Возможно, вам гораздо лучше просто анимировать игровые объекты, изменяя их свойство положения в каждом кадре на основе вектора скорости.У вас гораздо больше свободы над позицией и обновлениями позиции, и ни один из побочных эффектов таких действий, как задержка в один кадр, каждый раз при запуске нового действия.
-(void) update:(ccTime)delta
{
// modify velocity based on whatever you need, ie gravity, or just heading in one direction
// then update the node's position by adding the current velocity to move it:
self.position = CGPointMake(self.position.x + velocity.x, self.position.y + velocity.y);
}