2011-07-23 185 views
0

這裏的櫃檯是我的代碼:問題與衝突

-(void)detectCollision{ 

    imageView.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y); 


    if(CGRectIntersectsRect(imageView.frame,centre.frame)){ 


    label.text= [NSString stringWithFormat:@"%d", count]; 
    ++count; 
} 

我有一個CADisplayLink(60幀)上detectCollision。 我想增加一個「計數」的每一次「imageView」與「中心」碰撞,但我的問題是,計數增量太快,每次有一個碰撞它增加近100或200,我不知道爲什麼。我該如何解決這個問題?

回答

0

它因爲每次幀開始相交,

0123直到幀分離和超過100計數增加了CADisplayLink

所以你可以使用一個BOOL並將其設置爲true時,幀第一相交

if(CGRectIntersectsRect(imageView.frame,centre.frame)) 

你的條件將是真實的。然後檢查它們是否分開,並使BOOL返回false。

初始化BOOL intersectFlag在init中爲false。我認爲這些幀最初不會相交。

-(void)detectCollision 
{ 
    imageView.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y); 

    if(!intersectFlag) 
    {  
     if(CGRectIntersectsRect(imageView.frame,centre.frame))  
     { 
      intersectFlag = YES;   
      label.text= [NSString stringWithFormat:@"%d", count]; 
      ++count; 
     } 
    } 
    else 
    { 
     if(!CGRectIntersectsRect(imageView.frame,centre.frame)) 
     { 
      intersectFlag = NO; 
     } 
    } 
} 
+0

沒有它不工作時,計數器增加非常快,直到ImageView的不接觸中心 –

+0

你初始化intersectFlag爲NO在初始化 – ArunGJ

+0

沒有,但我從來沒有使用BOOL,我怎麼能初始化intersectFlag爲NO在init –

0

找出碰撞ü應用範圍使用不是幀

邊界 - 尺寸對象的內部

幀 - 從上海華的x,y +大小(邊界)偏移

在這裏,我假定ù在人像模式

-(void)detectCollision{ 

     if(CGRectContainsPoint(imageView.bounds, CGPointMake(160, 240))){ 


       label.text= [NSString stringWithFormat:@"%d", count]; 

       ++count; 

     } 


    }