¿Las acciones copiadas de "Cocos2d" no responden?

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?

preguntado el 12 de junio de 12 a las 20:06

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. -

¡Eso significaría que tendría que crear exactamente la misma acción para otro sprite! -

1 Respuestas

Copia de llamada en el repeat el objeto también copia la acción interna. Puedes ver esto mirando CCRepeatForeverimplementació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 or haz tu propia pregunta.