2013-03-30 34 views
0

首先,這裏就是我的一切聲明我.h文件的代碼...添加到一個INT時UIImages碰撞

@interface NextlLevel : UIViewController{ 

    IBOutlet UIImageView *Coin1; 
     int score; 
     IBOutlet UILabel *scorelable; 
    } 

@property (nonatomic, assign) int score; 
@property (nonatomic, retain) IBOutlet UILabel *scorelable; 

    @end 

我也合成了我實現我的.m文件這裏是代碼...

@synthesize score; 
    @synthesize scorelable; 

其次,我有一些代碼,只是檢查我的可拖拽圖像是否與靜止圖像相撞。下面是代碼...

-(void) ifCollided { 

    if(CGRectIntersectsRect(Coin1.frame,MoneyBag.frame)){ 
     Coin1.hidden = YES; 

    } 
    } 

此代碼是檢測一個碰撞的只是一個基本方式,但一旦圖像發生了衝突我要添加到其顯示在標籤的INT。 我想我能做到這一點是通過唯一的辦法......

首先加入這行代碼爲「ifCollided」

[self scorecheck]; 

所以現在「ifCollided」看起來是這樣的:

-(void) ifCollided { 

    if(CGRectIntersectsRect(Coin1.frame,MoneyBag.frame)){ 
     Coin1.hidden = YES; 
     [self scorecheck]; 
    } 
    } 

第三我不得不做出 'scorecheck' 我不希望這...

-(void)scorecheck{ 
       score++; 
     scorelable.text = [NSString stringWithFormat:@"%i", score]; 


    } 

    } 

這裏是顯示我目前使用的代碼無法正常工作的圖像。因此,不僅僅是將一個int添加到我設置爲0.我在分數標籤(在屏幕的頂部)中顯示int。由於代碼不正確工作,只要你觸摸,拖動並按住碰撞在圖像的邊界與衝突規則(在這種情況下,錢包)

這裏是我所說的圖像:

enter image description here

任何幫助將是非常讚賞

編輯:這是我本來是在虛空做ifCollided

-(void) ifCollided { 

    if (!Coin1.hidden) 
    { 
     Coin1.hidden = YES; 
     [self scorecheck]; 
    } 
    } 

謝謝@Elliott佩裏

+0

當Xcode碰撞?什麼? – 2013-03-30 20:20:32

+0

這一切似乎相當複雜。你真正的問題是什麼? –

回答

1

所以,爲了澄清,你想要一個機制,保證只有每個硬幣碰撞錢袋得分增加一次?

有很多方法可以做到這一點,但他們都需要你跟蹤哪些硬幣已經以某種方式被處理。您可以給每個硬幣一個獨特的參考,並存儲代表已經處理的硬幣的ID集合,避免在集合中包含有問題硬幣的ID時撥打scorecheck

或者,我會跟着去的方法,你可以標記每個硬幣,讓自己知道不要再次處理這個硬幣。由於您的隱藏碰撞的硬幣,爲什麼不使用hidden屬性,以確定是否增加分數或不:

-(void)ifCollided 
{ 
    if(CGRectIntersectsRect(Coin1.frame,MoneyBag.frame)) 
    { 
     if (!Coin1.hidden) 
     { 
      Coin1.hidden = YES; 
      [self scorecheck]; 
     } 
    } 
} 

無論什麼原因,是不是可行這裏有一個例子標記使用標記硬幣物業:

-(void)ifCollided 
{ 
    if(CGRectIntersectsRect(Coin1.frame,MoneyBag.frame)) 
    { 
     if (Coin1.tag != 1) 
     { 
      Coin1.hidden = YES; 
      [self scorecheck]; 
      Coin1.tag = 1; 
     } 
    } 
} 
+0

感謝您的快速回答,我會稍後嘗試代碼 –

+0

非常感謝我使用了第一種方法,它工作得很好 –