2011-05-29 60 views
6

我試圖讓我的CCSprite基於Player類,啓動播放器實例淡入淡出的方法,直到通過調用stopAllActions.的Cocos2D淡入/淡出動作重複永遠

在我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]; 
} 

這不起作用,並沒有解決永遠重複的部分。我知道我應該使用CCRepeatForever,但我沒有看到如何正確實施它。

謝謝!

回答

23

我沒有運行它,但我認爲別人已經成功的東西,如:

- (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

我仍然得到兩個淡出操作不兼容的指針錯誤。 '〜/ Player.m:warning:語義問題:將'CCAction *'發送給'CCFiniteTimeAction *'類型參數的指針類型不兼容' ' – Steve 2011-05-29 21:24:03

+0

雖然如果我將CCAction更改爲CCFiniteTimeAction,但錯誤消失並且工作正常。 ..爲什麼會這樣? – Steve 2011-05-29 21:26:55

+0

我現在明白了,當你沒有必要的時候,你會注意到CCAction。 CCFadeTo繼承CCFiniteTimeAction。這就是CCSequence需要知道的全部內容。我相應地編輯了我的答案。 – Steinbitglis 2011-05-29 21:31:25

-1

我有同樣的問題,我花了過長...時間找出原因。

當你創建CCSequences時,我發現你必須複製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]; 

希望我幫了忙。