2012-02-22 53 views
1

我正在研究一個遊戲(Cocos2d + Obj-C),我需要檢查兩個碰撞的子畫面是否具有相同的顏色。我已經試過以下不已:Cocos2d - 比較兩個ccColor3B結構顏色

 if (ship.imageSprite.color == base.imageSprite.color) 
     { 
      { 
       NSLog(@"matching colors"); 
      } 
     } 

,但我得到編譯時錯誤:「無效的操作數爲二進制expresson(‘ccColor3B’(又名‘結構_ccColor3B’)和‘ccColor3B’)。」測試兩種顏色的方法是什麼?謝謝。

回答

2

你必須單獨測試ccColor3B組件:

ccColor3B col1 = ship.imageSprite.color; 
ccColor3B col2 = base.imageSprite.color; 
if (col1.r == col2.r && col1.g == col2.g && col1.b == col2.b) 
{ 
    NSLog(@"matching colors"); 
} 
+0

會memcmp工作? memcmp(col1,col2,sizeof(ccColor3B)); – 2012-02-22 22:48:36

+1

更正... memcmp(&col1,&col2,sizeof(ccColor3B));//只是扔在那裏。目前無法測試自己。 – 2012-02-22 23:00:39

+0

好的 - 當比較一個包含float(或GLFloat)的結構時,是否有一些測試和memcmp不能像我想的那樣工作。似乎沒有一個選項。 – 2012-02-23 01:19:50

6
-(BOOL)isccColor3B:(ccColor3B)color1 theSame:(ccColor3B)color2{ 
    if ((color1.r == color2.r) && (color1.g == color2.g) && (color1.b == color2.b)){ 
     return YES; 
    } else { 
     return NO; 
    } 
} 
+0

這正是我需要的!謝謝 – Gormoruk 2012-02-23 05:56:13