2014-10-20 33 views
0

我正在研究cocos2d V3.x項目(SpriteBuilder V1.2.1)。目前試圖在CCSprite上延遲運行此操作序列。我不確定是否有問題,或者我只是不明白CCActionSequence是如何工作的。Cocos2d CCActionSequence順序和延遲搞砸了

我想要動作'a'開始,當完成(2s後)延遲(5s),然後調用這兩個函數(動作'c'和'd')。但是在模擬器中,順序是錯誤的('d'在'c'之前被調用),並且在'a'開始旋轉後它們大約被調用1秒。

我做錯了什麼?如果這是CCActionSquence的實際工作方式,我可以做些什麼來使其按前面段落中解釋的方式工作?

CCAction *a = [CCActionRotateBy actionWithDuration:2 angle:360]; 
CCAction *b = [CCActionDelay actionWithDuration:5]; 
CCAction *c = [CCActionCallFunc actionWithTarget:self selector:@selector(limpiarSeleccionadas)]; 
CCAction *d = [CCActionCallFunc actionWithTarget:self selector:@selector(endTurn)]; 
[[_arregloBolitas objectAtIndex:random] runAction:[CCActionSequence actionWithArray:@[a,b,c,d]]]; 

謝謝!

+1

我看不出任何錯誤...嘗試序列的var_list構造函數,看看它是否改變了結果。 [CCActionSequence操作:a,b,c,d,nil]; – YvesLeBorg 2014-10-20 01:00:33

+0

不,不能找到使用該構造函數的區別(除了以CCActionFiniteTime而不是CCAction作爲參數的構造函數的警告)。猜猜我不得不繞過這個......我覺得讓cocos2d對CCActionDelay不起作用感到失望,在依賴大量動作序列的遊戲中非常重要(幸好不是這個,但對於未來的項目來說它是一個巨大的問題):,( – Fdo 2014-10-20 09:09:47

+0

不確定,每次都適合我,而且我有很多複雜的序列,不要覺得失望,繼續尋找 – YvesLeBorg 2014-10-20 11:28:27

回答

0

您可以將動作'c'和'd'放入CCSpawn,然後它們將同時運行。還可以使用CCDelayTime延遲最後兩個操作。

請試試這個

CCAction *a = [CCActionRotateBy actionWithDuration:2 angle:360]; 
CCAction *b = [CCDelayTime actionWithDuration:5]; 
CCAction *c = [CCCallFunc actionWithTarget:self selector:@selector(limpiarSeleccionadas)]; 
CCAction *d = [CCCallFunc actionWithTarget:self selector:@selector(endTurn)]; 
[[_arregloBolitas objectAtIndex:random] runAction:[CCSequence actions: a, b, c, d, nil]]; 

我沒有你的環境,你可能需要修改了一下。謝謝。

+0

我實際上需要'c'才能在'd'之前完成,而不是其他方式(如果它們同時運行,就有可能發生這種情況)...您能否給我一個您建議的示例代碼關於CCDelayTime?我認爲CCActionDelay是延遲CCActionSequence事件的正確方法。 – Fdo 2014-10-20 00:35:06

+0

您正在爲cocos2d類混合使用v2.x和v3.x語法。 – YvesLeBorg 2014-10-20 01:01:22