2010-07-09 54 views
0

之間的碰撞我非常新可可。那麼我有多個UIImageView(animationView)在屏幕上飛行。我正在使用UIAnimation類爲它們設置動畫。雖然我有一個更多的UIImageView(myObject)。我嘗試碰撞這些,而我使用touchesMoved方法在屏幕上移動「myObject」。問題是我無法檢測到碰撞。我米使用下面的方法:試圖檢測動畫UIImageViews

if (CGRectIntersectsRect(animationView.frame, myObject.frame)) { 
    NSLog(@"Collision occurred"); 
} 

回答

1

我假設你正在談論CAAnimation,不UIAnimation。

在Core Animation中,動畫屬性的當前值不會反映在應用了它們的原始對象(視圖,圖層)中。相反,你必須看一個層的presentationLayer獲取當前有效值:

CGRect viewFrame = ((CALayer*)[animationView.layer presentationLayer]).frame; 
CGRect objectFrame = ((CALayer*)[myObject.layer presentationLayer]).frame; 
if (CGRectIntersectsRect(viewFrame, objectFrame)) { 
    NSLog(@"Collision occurred"); 
} 
+0

嗨,是我實在是用UIAnimation用於在屏幕上移動的UIImageViews。我曾嘗試使用類似的東西,但它會拋出一個錯誤,因爲對成員的請求不是結構或union.I已導入QuartzCore/QuartzCore.h和工作在iPhone應用程序,如果有幫助。 – Vikas 2010-07-16 12:01:51

+0

糟糕,當你不測試時會發生這種情況。我忘了演員。這是必須的,因爲'presentationLayer'返回id類型。我編輯了答案。 – 2010-07-16 12:30:52

+0

謝謝Ruhe,但問題仍然存在。我想知道我在這裏錯過了什麼。 – Vikas 2010-07-19 09:15:53