2010-04-06 91 views
1

我以cocos2d的方式編寫了我的代碼。我們可以在if-else的情況下使用(id)嗎?

id actionTo = [CCFadeOut actionWithDuration:4.0f]; 
id actionTo0 = [CCSequence actionWithDuration:2.0f]; 
if (m < enemyNumber) 
    id actionTo1 = [CCCallFunc actionWithTarget:self selector:@selector(goToNextScene)]; 
else 
    id actionTo1 = [CCCallFunc actionWithTarget:self selector:@selector(goToEndScene)]; 
id actionSeq = [CCSequence actions:actionTo, actionTo0, actionTo1, nil]; 
[targetE runAction: [CCSequence actions:actionSeq, nil]]; 

error: expected expression before 'id' 

我得到了上述錯誤。我們不應該在if條件下使用(id)嗎? 我想通過使用if- else條件來調用兩個選擇器。 我該怎麼做? 謝謝。

回答

4

所以,很簡單寫

id actionTo1 = [CCCallFunc actionWithTarget:self selector: 
       (m<energyNumber ? @selector(goToNextScene) : @selector(goToEndScene))]; 
+0

是的,那真的很簡單。謝謝你肯尼。 – 2010-04-06 07:55:37

6

你不能在那個地方聲明新的變量。你應該做的是,如果條件並有其值設置之前聲明的變量actionTo1

... 
id actionTo1 = nil; 
if (m < enemyNumber) 
    actionTo1 = [CCCallFunc actionWithTarget:self selector:@selector(goToNextScene)]; 
else 
    actionTo1 = [CCCallFunc actionWithTarget:self selector:@selector(goToEndScene)]; 
... 
+0

謝謝弗拉基米爾。 – 2010-04-06 07:27:44

+0

你可以在那裏聲明變量就好,但它不會在if或else塊的範圍外可見 – LearnCocos2D 2010-05-25 13:33:08

+0

是的,但是爲了能夠在if-else語句中聲明一個變量,你需要把代碼放到{}中。塊和是 - 這將限制變量可見性僅限於該塊。附:漂亮的博客btw – Vladimir 2010-05-25 13:38:48

相關問題