L'azione CCFadeOut permette di applicare una dissolvenza ad un oggetto che sia conforme al protocollo CCRGBAProtocol. Siccome CCSprite implementa questo protocollo allora i 2 oggetti che abbiamo creato (Ball e Monkey) ereditano il supporto a questo tipo di azione.
Vediamo come usarla. Aggiungete il seguente metodo a Monkey.m.
- (void)fadeOut
{
CCFadeOut * fadeOut = [CCFadeOut actionWithDuration:2.0];
[self runAction:fadeOut];
}
Inoltre modificate il metodo ccTouchBegan:withEvent
di HelloWorldLayer.m come mostrato di seguito.
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CCSprite * sprite = [self findSpriteFromTouch:touch];
if (sprite) {
if ([sprite isKindOfClass:Ball.class]) {
Ball * ball = (Ball*) sprite;
[ball increaseWidth];
} else if ([sprite isKindOfClass:Monkey.class]) {
Monkey * monkey = (Monkey*)sprite;
// [monkey blink];
[monkey fadeOut];
}
}
return YES;
}
CMD + R per provare l'effetto che dovrebbe essere eseguito quando l'oggetto di tipo Monkey riceve un tocco.
Più precisamente quest'azione modifica l'opacità dell'oggetto da 255 a 0. Questo significa che indipendentemente dal valore di opacità iniziale, quando viene eseguita imposta l'opacità a 255 (massima visibilità) e poi la porta progressivamente a 0.
Ve ne potete rendere conto toccando una volta l'oggetto di tipo Monkey, subito questo inizierà a scomparire. Se poi lo toccate nuovamente (benché nascosto si trova sempre nella stessa posizione) lo vedrete istantaneamente tornare pienamente visibile per poi scomparire ancora progressivamente.
L'azione CCFadeIn è speculare alla precedente, infatti trasforma l'opacità dell'oggetto da 0 a 255.
Per approfondire possiamo leggere La documentazione di CCFadeOut
e CCFadeIn
Infine l'azione CCFadeTo permette modifica l'opacità di un oggetto verso un valore specifico che dovete indicare.
CCFadeTo * fadeTo = [CCFadeTo actionWithDuration:1.0 opacity:150];
Il parametro opacity accetta valori compresi tra 0 e 255.
La documentazione di CCFadeTo
è disponibile qui