2010-04-06 7 views
1

J'ai écrit mon code de la manière suivante dans cocos2d.Peut-on utiliser (id) en condition if- else?

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' 

Je reçois l'erreur ci-dessus. Ne devrions-nous pas utiliser (id) dans si condition? Je veux me faire appeler deux sélecteurs en utilisant la condition if-else. Comment puis-je le faire? Merci.

Répondre

4

Il est plus simple d'écrire

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

Oui.C'était vraiment plus simple. THank You Kenny. –

6

Vous ne pouvez pas déclarer une nouvelle variable à cet endroit. Ce que vous devez faire est de déclarer votre variable actionTo1 avant si condition et définir sa valeur là:

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

Merci Vladimir. –

+0

vous pouvez déclarer la variable ici très bien mais elle ne sera pas visible en dehors de la portée du bloc if ou else – LearnCocos2D

+0

Oui, mais pour pouvoir déclarer une variable dans l'instruction if-else, vous devrez mettre du code dans {} block et yes - cela limitera la visibilité variable à ce bloc seulement. P.S. Belles blogs btw – Vladimir