2011-11-10 7 views
1

UIViewアニメーションを使用して、画面全体にボタンを移動しています。それが移動している間、私はNSTimerはこのようになります方法UIViewアニメーションを使用しているときのUIButton.frame

checkForCollision 

実行されている:0.05の間隔で

for(UIButton* b in squares) 
    if(CGRectIntersectsRect(playerSquare.frame, b.frame)) { 
     [self showEndMenu]; 
     break; 
    } 

を。ボタンが別のパスに移動するたびに、そのメソッドに通知することができます。問題は、表示されるのは、UIButton bのフレームをチェックすると、ボタンが移動しているフレームのみが表示されることです。

私はボタンが次のようにアニメーションされている必要があり:

[UIView beginAnimations:@"" context:nil]; 
[UIView setAnimationDuration:1.3]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
view.center = destPoint; 
[UIView commitAnimations]; 

ので、destPointはCGRectplayerSquare.frame交差する場合、[self showEndMenu]が呼び出されます。しかし、ボタンがアニメーションの途中であるフレーム/位置がplayerSquareと交差する場合、[self showEndMenu]は呼び出されません。私はこれを解決する方法を知らない。必要に応じてより多くのコードを提供することができます。ありがとうございました!

+0

アニメーション中に[UIViewアニメーション決定センター]の複製が可能です(http://stackoverflow.com/questions/6545545/uiview-animation-determine-center-during-animation) – jrturton

答えて

2

プロパティをアニメーション化してビューを移動すると、直ちにプロパティが最終値に設定されます。

コアアニメーションレイヤーを使用して中間値を取得できます(http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Animation_Types_Timing/Articles/PropertyAnimations.html#//apple_ref/doc/uid/TP40006672-SW1残念ながら電話で入力すると申し訳ありません)。正直なところ、私はそれについての経験はありません。もし誰かがそれをここで見ることは素晴らしいでしょう。実際には、クイック検索では、私は:)

UIView animation determine center during animation

あなたの他のオプションは、同じように、タイマーを使用して反復的にボタンを移動させることだと思う、あなたが探している正確な答えで、この質問を上げましたそのオブジェクトはcocos2dを使用して移動します。そのたびに位置を確認すると、実際にボタンが表示されます。しかし、この方法では、パスを自分で計算する必要があります。

関連する問題