Привет, я полностью запутался с анимацией CGAffineTransform. Все, что я хочу сделать, это переместить спрайт из позиции справа в позицию слева. Когда он остановился, я хочу «сбросить» его, то есть переместить обратно туда, где он начался. Если приложение закрывается (с многозадачностью), я хочу снова сбросить позицию при запуске и повторить анимацию.
Это то, что я использую для анимации.
[UIImageView animateWithDuration:1.5
delay:0.0
options:(UIViewAnimationOptionAllowUserInteraction |
UIViewAnimationOptionCurveLinear
)
animations:^(void){
ufo.transform = CGAffineTransformTranslate(ufo.transform, -270, 100);
}
completion:^(BOOL finished){
if(finished){
NSLog(@"ufo finished");
[self ufoAnimationDidStop];
}
}];
Насколько я понимаю, CGAffineTransforms просто визуально делает спрайт похожим на перемещенный, но фактически не перемещает его. Поэтому, когда я пытаюсь «сбросить» позицию, используя
ufo.center = CGPointMake (355, 70);
это ничего не делает.
У меня что-то работает, если я позвоню
ufo.transform = CGAffineTransformTranslate (ufo.transform, 270, -100);
сбрасывается. Проблема в том, что если я выхожу из приложения на полпути через анимацию, то, когда оно перезапускается, оно не обязательно начинается с самого начала и не попадает в нужное место, оно просто сходит с ума!
Есть ли способ просто удалить все примененные к нему преобразования? Я рассматриваю только использование таймера, но это кажется глупым, когда этот метод должен работать. Я боролся с этим в течение некоторого времени, поэтому любая помощь будет высоко ценится.
Спасибо