2010-11-22 11 views
2

こんにちは、私はCGAffineTransformアニメーションと全く混同しています。私がしたいのは、スプライトを右の位置から左の位置に移動することだけです。それが停止したとき、私はそれを「リセット」したい、すなわちそれをどこで開始したかに戻したい。アプリが終了すると(マルチタスキングで)、開始時に再び位置をリセットしてアニメーションを繰り返す必要があります。アニメーションのiPhoneヘルプ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、270、-100)

ufo.transform = CGAffineTransformTranslate呼び出す場合、私は、何かの作業を持っています。

リセットされます。問題は、私がアニメーションの途中でアプリを終了し、それが再起動したときに、必ずしも最初から始まらず、正しい場所に行かないということです。基本的には狂ってしまいます!

適用されているトランスフォームを削除する方法はありますか?私はちょうどタイマーを使用して検討しているが、これは愚かなこのメソッドが動作する必要があります。私はしばらくの間これを苦労していたので、どんな助けでも大歓迎です。

おかげで

答えて

4

ビューに変換を適用すると、実際にセンターまたはビューの境界を変更しません。ビューが画面に表示される方法を変えるだけです。トランスフォームをCGAffineTransformIdentityに戻して、「通常」のようにしたいとします。アニメーションを開始する前にそれを設定し、アニメートするように設定することができます。

+0

ありがとうございました、私はずっとそれを苦労しています! 1つの質問、私はこの行を呼び出す前に変換が適用されていることを確認できますか?アプリがアクティブになったときにすべてのアニメーションがリセットされていることを確認したいのですが、既に変換されている場合とそうでない場合があります。 – user157733

+0

確かに! CGAffineTransformクラスのCGAffineTransformIsIdentityメソッドがあります。私はそれがいつ使われるべきかに完全には慣れていませんが、現在の変換が恒等変換であるかどうかを教えてくれます。 – GendoIkari

関連する問題