2014-06-18 34 views
0

我在使用cocos2d v3.0(iPhone,Objective-C)中的CCActionSequence時遇到問題。CCActionSequence同時運行所有操作

我用一些文字創建了一個標籤。我希望它在淡出時向上移動。之後,將其從場景中移除。我創建了3個動作:moveBy,Fade和Remove。看一下網上的一些教程,我應該能夠將操作與CCActionSequence一起鏈接起來。然而,當我這樣做,所有三個動作在同一時間運行,淡出前基本消除我的標籤和移動動畫一命嗚呼

CCLabelTTF *labelDP = [CCLabelTTF labelWithString:@"Double Points!" fontName:@"Helvetica" fontSize:16.0f]; 
labelDP.positionType = CCPositionTypeNormalized; 
labelDP.position = ccp(0.5f,0.5f); 
labelDP.color = [CCColor colorWithWhite:1.0f alpha:1.0f]; 
[self addChild:labelDP]; 

CCAction *actionMove = [CCActionMoveBy actionWithDuration:ALERT_FADE_DURATION position:ccp(0.0f, 40.0f)]; 
CCAction *actionFade = [CCActionFadeOut actionWithDuration:ALERT_FADE_DURATION]; 
CCAction *actionRemove = [CCActionRemove action]; 

[labelDP runAction:actionFade]; 
[labelDP runAction:[CCActionSequence actions:actionMove, actionRemove, nil]]; 

有沒有讓這些動畫序列同時運行,而不是設置?因爲從我看到的所有教程中,他們似乎能夠用上面類似的代碼行來實現它。

任何幫助,將不勝感激。

編輯:ALERT_FADE_DURATION是定義爲2.0F

+1

無法找到代碼中的任何問題,你可以依次包括所有動作即'[labelDP runAction:[CCActionSequence actions:actionMove,actionFade,actionRemove,nil]];'看效果 –

+2

如何聲明ALERT_FADE_DURATION? – LearnCocos2D

+0

@InderKumarRathore:嘗試過,結果相同 – l3utterfly

回答

1

宏,我相信這個問題是在同一節點上調用runAction兩次。

編輯:作爲LearnCocos2D在調用runAction,曾多次應工作,只要行動不與對方(即,兩個移動並行運行在同一節點上操作)干擾的評論中提到所以它要麼行爲在3.x版變更或者你ALERT_FADE_DURATION定義太小(如在評論中指出的一樣)

嘗試使用CCActionSpawn動作可以運行在同一節點上並行操作:

CCAction *spawnAction = [CCActionSpawn actionWithArray:@[actionMove , actionFade]]; 
CCAction *sequenceAction = [CCActionSequence actionWithArray:@[spawnAction]]; 

[labelDP runAction:sequenceAction]; 

釷是應該給你想要的效果。首先移動和褪色的標籤,然後才從其父節點中刪除,

+1

可以重複調用runAction:這是平行運行而不是按順序運行的常用方式。除非此行爲在v3中已更改。 – LearnCocos2D

+0

是的,這些行爲不會互相干擾,但他的代碼看起來是合法的,因此它的v3中的變更(我無法找到批准的來源)或ALERT_FADE_DURATION的問題,因爲您已經注意到 – giorashc

0

試試這個:

CCAction *actionMove = [CCActionMoveBy actionWithDuration:ALERT_FADE_DURATION position:ccp(0.0f, 40.0f)]; 
CCAction *actionFade = [CCActionFadeOut actionWithDuration:ALERT_FADE_DURATION]; 
CCAction *actionRemove = [CCActionRemove action]; 

id seq = [CCActionSequence actions:actionMove, actionRemove, nil]; 

[labelDP runAction:[CCActionSpawn actions:actionFade, seq, nil]]; 
相關問題