¿Cómo apuntar a un CCSprite específico sin pasarlo al método?
Frecuentes
Visto 488 veces
0
Esta es una pregunta bastante simple, pero me está costando mucho responderla.
He creado un método que toma una variable int. Con él, necesitaría usarlo para realizar acciones con CCSprite.
Por ejemplo lo llamo con esto: [_hud hideThisActionLed:2];
y luego debería ocultar CCSprite llamado actionLed2.
No puedo pasar el CCSprite real al método porque lo llamo desde otra clase que no tiene acceso a ese sprite en particular.
Puedo hacer el nombre del sprite con esto: [NSString stringWithFormat:@"actionLed%d", actionLedNumber]
, pero no puedo encontrar una forma de usar eso para apuntar a ese CCSprite especificado.
Así es como declaré los sprites en la clase hud:
actionLed1 = [CCSprite spriteWithFrameName:@"actionLed1.png" setScale:TRUE resetAnchor:TRUE];
[actionLed1 setOpacity:0];
[self addChild: actionLed1 z:11 tag:1];
Ese x4 para los 4 leds.
2 Respuestas
1
Esto depende de cómo se pueda acceder a los diferentes leds.
Si son propiedades dentro de su clase, puede acceder a ellas de esta manera:
NSString *actionLedName = [NSString stringWithFormat:@"actionLed%d", actionLedNumber];
CCSprite *actionLed = [self valueForKey:actionLedName];
Si están almacenados en una matriz, puede acceder a ellos de esta manera:
CCSprite *actionLed = [self.actionLeds objectAtIndex:actionLedNumber];
Si configuró una etiqueta para cada actionLed al agregarlo, puede acceder a ellos de esta manera:
CCSprite *actionLed = [self getChildByTag:actionLedNumber];
respondido 09 mar '12, 14:03
El primer método funciona. ¡Gracias! El segundo dice "Tipos de puntero incompatibles que inicializan 'CCSprite *' con una expresión de tipo 'CCNode *'. - Cansado
0
Cuando agregue los objetos CCSprite a su capa, use la opción withTag. Luego, puede hacer referencia a los sprites por el número de etiqueta, que es el número que pasa al método hideThisActionLed.
[_hud addChild:ledSprite withTag:1];
[_hud addChild:ledSprite2 withTag:2];
etc ...
-(void)hideThisActionLed:(int)ledNum {
CCSprite *theSprite = [_hud getChildByTag:ledNum];
... hide the sprite ...
respondido 09 mar '12, 14:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas iphone objective-c cocos2d-iphone ccsprite or haz tu propia pregunta.
Son solo CCSprites normales que he declarado en otra clase (a la que llamo con
[_hud hideThisActionLed:2];
. Es una nueva clase para HUD que muestra toda la información, la salud, el número de turnos, etc. - LiuhuHay muchas formas posibles de acceder a los sprites. ¿Puede editar su pregunta y publicar el código que usa para declarar y agregar estos sprites? - sch