Cocos2d Fade In / Out действие, чтобы повторить навсегда - PullRequest
7 голосов
/ 30 мая 2011

Я пытаюсь создать метод для моего CCSprite основанного Player класса, чтобы запускать и исчезать экземпляр игрока до тех пор, пока он не остановился, вызвав stopAllActions.

В моем Player классе Ihave:

- (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];
}

Это не работает и не обращается к повторению навсегда.Я знаю, что, вероятно, мне следует использовать CCRepeatForever, но я не вижу, как правильно его реализовать.

Спасибо!

Ответы [ 2 ]

23 голосов
/ 30 мая 2011

Я не запускал это, но я думаю, что другие преуспели с чем-то вроде:

- (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 голосов
/ 25 февраля 2013

У меня была та же проблема, и мне понадобилось много времени, чтобы понять, почему.

при создании CCSequence я обнаружил, что вам нужно скопировать CCAction.

В вашем случае.

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];

Надеюсь, я помог.

...