こんにちは私は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);
リセットします。問題は、アニメーションの途中でアプリを終了した場合、再起動したときに必ずしも最初から開始されるとは限らず、適切な場所に移動しないため、基本的にクレイジーになります。
適用された変換を削除する方法はありますか?タイマーだけを使うことを考えていますが、この方法がうまくいくのはばかげているようです。私はこれにしばらく苦労してきたので、どんな助けでも大歓迎です。
ありがとう