2010-10-06 105 views
1

我有兩個UIImageView位於水平屏幕的中心,當用戶單擊一個按鈕時,另一個位於屏幕外的UIImageView從右側滑入。我只是想檢測何時將視圖帶到屏幕上與兩個靜態視圖相沖突。問題是,當我運行我的代碼並檢查CGRect框架時,它們從視圖的開始位置返回,而不是結束,無論我在哪裏將框架調用放置在我的方法中,或者即使將它們放在單獨的方法之外。我對Obj-C有點新,並且我明白核心動畫運行在一個單獨的線程上,我猜測這就是爲什麼我得到起始值。 (如果我在這裏錯了,請糾正我)。Objective-C:問題與CGRect .frame intersect /包含

所以,我想這裏的問題是如何檢測碰撞,當一個項目是靜態的,另一個是動畫。這裏是我的代碼(隨意把它清理乾淨):

- (IBAction)movegirl 
{ 

    //disabling button 
    self.movegirlbtn.enabled = NO; 

    //getting graphics center points 
    CGPoint pos = bushidogirl.center; 
    CGPoint box1 = topbox.center; 
    CGPoint box2 = bottombox.center; 

    //firing up animation 
    [UIView beginAnimations: nil context: NULL]; 
    //setting animation speed 
    [UIView setAnimationDuration:2.0 ]; 

    //setting final position of bushidogirl, then resetting her center position 
    pos.x = 260; 
    bushidogirl.center = pos; 

    //running animations 
    [UIView commitAnimations]; 

    //playing gong sound 
    [self.audioplayer play]; 

    //enabling button 
    self.movegirlbtn.enabled = YES; 


    [self collisiondetection: bushidogirl : topbox]; 
} 

- (void)collisiondetection:(UIImageView *)item1 : (UIImageView *)item2 
{ 

    CGRect item1frame = item1.frame; 
    CGRect item2frame = item2.frame; 

    NSLog(@"Item1 frame = %d and Item 2 frame = %d", item1frame, item2frame); 
} 

回答

4

如何:

if (CGRectIntersectsRect(item1frame, item2frame)) 
{ 
    // collision!! 
} 
+0

感謝您的回答。我應該更清楚一點。我可以編碼如何檢查並查看是否發生碰撞,當我這樣做時,我會在碰撞時得到否定結果。 – PruitIgoe 2010-10-06 23:59:23

+0

你如何確定項目框架?您是否使用相對於共同父視圖的框架? – 2010-10-07 00:06:46

+0

我可能不清楚你在問什麼。如果你的意思是這樣的:CGRect thisframe = parentObject.imageView.frame然後不,他們的層次結構是UIView-> UIImageView,我將它們引用爲UIImageView.frame ...我假設UIView是這裏的父項。 – PruitIgoe 2010-10-07 11:27:39