2009-04-13 19 views
5

¿Cómo se puede crear una acción personalizada en Cocos2D que fue capaz de realizar una 'devolución de llamada' en el tiempo, haciendo que cada llamada a la devolución de llamada progresivamente más larga que la última llamada (usando algo similar a la acción EaseExponentialOut ya proporcionada con Cocos2DAcción de suavizado personalizada con Cocos2D-iphone

Algo similar a esto:. (que no funciona)

id sequence = [Sequence actions: [CallFunc actionWithTarget: self selector: @selector(spinTick)], [DelayTime actionWithDuration: 0.034f], nil]; 
id repeat = [Repeat actionWithAction: [sequence copy] times: 18]; 
id ease = [EaseExponentialOut actionWithAction: [repeat copy]]; 
[ease setDuration:4]; 

id play = [CallFunc actionWithTarget:self selector:@selector(play)]; 
[self runAction: [Sequence actions: [ease copy], [play copy], nil]]; 

el código anterior se ejecuta toda la 'secuencia', 18 veces y luego ejecuta el 'juego 'devolución de llamada al final de la última secuencia.

Sin embargo, el EaseExponentialOut no parece tener ningún efecto en la acción 'repeat' que se crea - Esperaba que ajustara la duración de la acción 'DelayTime' dentro de la acción 'sequence', pero lo hace no parece hacer esto

También intenté crear mi propia acción personalizada basada en IntervalAction, pero fallé miserablemente.

+0

¿Falta algo aquí? ¿La devolución de llamada spinTick usaría SpinnerAction? No parece que haya animación en uso. De la forma en que lo veo, tienes una secuencia repetida de devoluciones de llamada spinTick con una duración esperada de easeexponentialout. No se hace referencia a Spinner en el código de muestra ... –

+0

SpinnerAction se agregó a la parte inferior, se olvidó de incluirlo. –

+0

después de mirar las cosas de nuevo, 'spinner' nunca se usa realmente en el código anterior; es solo una instancia de mi intento fallido de SpinnerAction (que se agregó debajo de la publicación después del hecho) –

Respuesta

2

Aparentemente, el código anterior es funcional, era solo mi uso del tiempo en las duraciones. Tampoco fue necesario usar 'copiar', ya que las acciones son utilizables tal cual.

Si aumenté mi sincronización de 0.034 a algo más a lo largo de las líneas de 0.25, entonces el resultado fue más cercano a lo que esperaba ver. Ahora solo tengo que jugar con los valores de duración para que todo salga "bien".

+0

Oye, estoy intentando implementar algo así como un rebote pelota. ¿Podrían ayudarme por favor a implementarlo? ¿Cómo usar la función de facilidad para esa cosa en particular? – rkb

+0

Necesitaría más información que eso, y probablemente iría un poco más lejos si publicara la pregunta para todos. –

Cuestiones relacionadas