2012-02-12 20 views
8

im tratando de hacer mi parpadeo de sprites, pero simplemente desaparece, he buscado google, pero no puedo encontrar una solución, aquí está lo que estoy haciendo:cocos2d conseguir un sprite a parpadear, se vuelve invisible

CCBlink * blinker = [CCBlink actionWithDuration: 0.5 blinks: 1]; 
[player runAction: blinker]; 

se llama a este método cuando dos de mis sprites colisionan, cuando ocurre la colisión, quiero que el sprite 'player' parpadee durante unos segundos. en este momento, cuando los sprites colisionan, el sprite 'jugador' se vuelve invisible ... gracias

+0

Debe aceptar una respuesta o comentario. – phlebotinum

Respuesta

0

Compruebe que cuando (y donde) procesa los tipos de eventos 'onCollision' no elimina el sprite de su elemento primario.

+0

sí, cuando los duendes colisionan, no pasa nada, solo quiero que el sprite del jugador parpadee, así que he puesto el código anterior en 'if (if (CGRectIntersectsRect (playerRect, rockRect) 0' – sahil

3

CCBlink parece funcionar al alternar la visibilidad de su sprite dentro y fuera de un número determinado de veces dentro de la duración establecida que le dio. Dependiendo de la duración que establezca, podría a veces terminar con un estado de visibilidad "apagado" al final de la acción (muy buggy, sí, lo tuve también antes), que no es del todo deseado.

Dos sugerencias: (1) Juega con el número de parpadeos. (2) Forzar siempre que el sprite sea visible al final del parpadeo:

Agregue: [CCShow action] al final de su acción de parpadeo. Puede encadenar ambas acciones en una CCSequence.

+0

+1 esto funciona. Necesitaba. (Es curioso que me encontré con esto hace dos semanas cuando le sugerí a OP que aceptara una respuesta, y ahora la uso) – phlebotinum

0

La acción de parpadeo tiene errores. Siempre uso lo siguiente para garantizar que el objeto permanezca visible al final de la animación:

Sequence* action = Sequence::create(Blink::create(BLINK_DURATION, BLINK_TIMES), Show::create(), NULL); 
Cuestiones relacionadas