¿Las acciones copiadas de "Cocos2d" no responden?
Frecuentes
Visto 145 equipos
0
Estoy ejecutando una animación en 2 sprites, así:
-(void) startFootballAnimation {
CCAnimation* footballAnim = [CCAnimation animationWithFrame:@"Football" frameCount:60 delay:0.005f];
spiral = [CCAnimate actionWithAnimation:footballAnim];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:spiral];
[self runAction:repeat];
[secondFootball runAction:[[repeat copy] autorelease]];
}
El problema que tengo es que, cuando llamo a este método:
- (void) slowAnimation {
[spiral setDuration:[spiral duration] + 0.01];
}
....solo ralentiza la animación del primer sprite y no la del segundo. ¿Necesito hacer algo diferente con las acciones copiadas para que reaccionen a la ralentización de la animación?
1 Respuestas
2
Copia de llamada en el repeat
el objeto también copia la acción interna. Puedes ver esto mirando CCRepeatForever
implementación de copyWithZone:
en CCAction.m. Esto es bueno porque una acción solo puede tener un nodo de destino.
Entonces sí, para responder a su pregunta en los comentarios anteriores, necesita crear una nueva acción para cada sprite. Puede usar el método de copia para replicar rápidamente sus acciones, pero tendrá que aplicar cambios a su comportamiento (por ejemplo, su slowAnimation
cosas) individualmente.
Respondido el 12 de junio de 12 a las 21:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas cocos2d-iphone or haz tu propia pregunta.
Si no me equivoco, deberías usar 2 acciones para dos objetos diferentes. De lo contrario, no se puede distinguir entre ellos. Aunque no soy 100% positivo. - SimplyKiwi
¡Eso significaría que tendría que crear exactamente la misma acción para otro sprite! - Stephen