2011-05-29 10 views
6

que estoy tratando de hacer un método para mi CCSprite basado Player clase para iniciar la instancia jugador fundido o salir hasta que se detiene llamando stopAllActions.Cocos2d fade in/out acción para repetir siempre

En mi clase tengo Player :

- (void)pulse 
{ 
    [self setOpacity:1.0]; 
    CCAction *fadeIn = [CCFadeTo actionWithDuration:0.5 opacity:0.5]; 
    CCAction *fadeOut = [CCFadeTo actionWithDuration:0.5 opacity:1.0]; 

    CCSequence *pulseSequence = [CCSequence actions: 
           fadeIn, // I get a warning about incompatible pointer types... 
           fadeOut, 
           nil]; 
    [self runAction:pulseSequence]; 
} 

Esto no funciona y no aborda la parte de repetir para siempre. Sé que probablemente debería usar CCRepeatForever, pero no veo cómo implementarlo correctamente.

Gracias!

Respuesta

23

no he corrido esto, pero creo que otros han tenido éxito con algo como:

- (void)pulse 
{ 
    [self setOpacity:1.0]; 
    CCFadeTo *fadeIn = [CCFadeTo actionWithDuration:0.5 opacity:127]; 
    CCFadeTo *fadeOut = [CCFadeTo actionWithDuration:0.5 opacity:255]; 

    CCSequence *pulseSequence = [CCSequence actionOne:fadeIn two:fadeOut]; 
    CCRepeatForever *repeat = [CCRepeatForever actionWithAction:pulseSequence]; 
    [self runAction:repeat]; 
} 
+0

Todavía estoy obteniendo los errores de puntero incompatibles para ambas acciones de fundido. '~/Player.m: advertencia: Problema semántico: tipos de punteros incompatibles que envían 'CCAction *' al parámetro de tipo 'CCFiniteTimeAction *' ' – Steve

+0

aunque si cambio 'CCAction' a' CCFiniteTimeAction' el error desaparece y funciona. ¿Por qué sería eso? – Steve

+0

Entiendo ahora, usted escribió a CCAction cuando no era necesario. CCFadeTo hereda CCFiniteTimeAction. Eso es todo lo que CCSequence necesita saber. Edité mi respuesta en consecuencia. – Steinbitglis

-1

que tenía el mismo problema y me tomó un muuuucho tiempo de averiguar por qué.

cuando crea CCSecuencias Encontré que debe copiar la CCAction.

En su caso.

CCAction *fadeIn = [CCFadeTo actionWithDuration:0.5 opacity:0.5]; 
CCAction *fadeOut = [CCFadeTo actionWithDuration:0.5 opacity:1.0]; 

CCSequence *pulseSequence = [CCSequence actions: 
          [fadeIn copy], 
          [fadeOut copy], 
          nil]; 

Hope I help.