2012-02-12 15 views
8

im cercando di fare il mio sprite lampeggiare, ma scompare solo, ho cercato di Google, ma non posso trovare una soluzione, ecco quello che sto facendo:cocos2d ottenere uno sprite a lampeggiare, diventa invisibile

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

questo metodo viene chiamato quando due dei miei folletti si scontrano, quando avviene la collisione, voglio che lo sprite del "giocatore" lampeggi per qualche secondo. al momento, quando gli sprite si scontrano, lo sprite 'giocatore' diventa invisibile .... grazie

+0

È necessario accettare una risposta o un commento. – phlebotinum

risposta

0

Verificare che quando (e dove) si elabora tipi di eventi 'onCollision' non si rimuova lo sprite dal suo genitore.

+0

sì, quando gli sprite si scontrano, non succede nulla, voglio solo che il folletto del giocatore lampeggi, quindi ho messo il codice sopra nel 'if (if (CGRectIntersectsRect (playerRect, rockRect) 0' – sahil

3

CCBlink sembra funzionare attivando e disattivando la visibilità dello sprite un determinato numero di volte entro la durata specificata. A seconda della durata impostata, è possibile che a volte finisca con uno stato di visibilità "off" alla fine dell'azione (molto bacato sì, l'ho avuto anche prima), che non è proprio desiderato.

Due suggerimenti: (1) Gioca con il numero di lampeggiamenti. (2) Forzare sempre lo sprite per essere visibile alla fine del lampeggio:

Aggiungi: [Azione CCShow] alla fine dell'azione lampeggiante. Puoi stringere entrambe le azioni in un CCSequence.

+0

+1 funziona. avevo bisogno di. (divertente che mi sono imbattuto in queste due settimane fa, quando ho suggerito a OP di accettare una risposta, e ora lo uso) – phlebotinum

0

L'azione di lampeggiamento è bacata. Uso sempre quanto segue per garantire che l'oggetto rimanga visibile alla fine dell'animazione:

Sequence* action = Sequence::create(Blink::create(BLINK_DURATION, BLINK_TIMES), Show::create(), NULL); 
Problemi correlati