2013-06-13 29 views
1

我是Cocos2dx的新手,我試圖創建一個行星動畫,通過使用3:1矩形紋理來旋轉自身,其中包含3個正方形是球體的兩個面(地圖)第三個方塊是第一個方塊的克隆)。我通過裁剪紋理來創建一個幀數組,並將它們添加到CCAnimation中。然後我用兩個效果測試這個動畫,使方框變成一個3D圓:CCLens和CCTurnOffTiles(我將在以後修改它以僅關閉圓外的網格)。在Cocos2dx中同時運行很多效果操作

但有一個問題:兩個效果不堆疊。如果在CCLens之後添加CCTurnOffTiles,CCLens將不起作用;如果在CCTurnOffTiles之後添加CCLens,CCDirector將在運行時拋出讀取違例異常。

有沒有解決方案可以同時運行多個效果或以其他方式實施行星動畫?謝謝。

+0

雖然創建兩個不同的動畫確保您使用不同的數組和CCAnimation。 我很確定你可以在同一個精靈上同時使用兩個不同的動畫,使用單獨的runAction –

+0

@GaneshSomani通常它應該工作。但在這種情況下,CCLens和CCTurnOffTiles似乎不能一起工作。 – eee

回答

1

CCTurnOffTiles和CCLens3D都繼承CCGridAction。

但是一個取消另一個:CCTurnOffTiles將關閉網格圖塊,CCLens3d需要這些網格圖塊。

我推薦你畫出所有的行星精靈,已經圈出並使用SpriteSheet,然後使用CCAnimation進行動畫處理,而不使用CCTurnOffTiles或CCLens3D。這是最簡單的,並會消耗更少的CPU。

+0

在我的項目中,有許多使用不同紋理的地球物體。繪製所有星球精靈意味着必須完成許多藝術作品。因此,我正在尋找另一種解決方案,而不是這個。有沒有什麼方法可以在加載時直接修改CCFrame,或者創建一個遮罩,以便在動畫操作過程中只有圓內的點變得可見? – eee

+0

您可以使用着色器,GlScissor或CCClippingNode遮罩精靈。看看這個鏈接:http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0,http://www.cocos2d-iphone.org/forums/topic/how-to-set-a-mask-on-a-spriteatlassprite-object /,http://stackoverflow.com/questions/3177751/cocos2d-iphone-sprite-cliping-mask-frame – Bivis

3

嘗試使用CCSpawn

// Create the effects 
CCLens3D * lensEffect; // Your CCLens3D create() 
CCTurnOffTiles * turnOff; // Your CCTurnOfftiles create() 

// Create a spawn to run them simultaneously 
CCSpawn * sphereEffect = CCSpawn::createWithTwoActions(lensEffect, turnOff); 

// Run the spawn 
myObject -> runAction(sphereEffect); 
+0

我試過使用CCSpawn,但分別使用runAction得到了同樣的錯誤。 – eee