2011-04-12 72 views
0

我對使用cocos2d中的動畫感到困惑...我有一個sprite,它有3種類型的動畫,就像一個笑聲,笑聲,哭泣和眨眨眼睛。 。我爲這些動畫中的每一個分開了精靈圖表...我將如何能夠在同一個精靈上使用這些動畫...任何人都可以幫助我嗎?如何在cocos2d中的相同sprite上實現兩個不同的動畫

問候,

蘇拉傑

回答

0

這將是有你在同一個精靈表所有動畫要容易得多,因爲,如果你的精靈使用CCBatchnode做到這一點的抽籤方法,你必須從一張紙中刪除它,並將其讀取到另一張。

在你的CCSprite子類中,設置一些CCAction的實例變量。

在初始化方法中,寫入這些操作並將它們存儲到實例變量中。

然後當你想使用動畫時,告訴你的精靈運行它。

E.g.

NSMutableArray *smileFrames = [NSMutableArray array]; 
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile.png"]]; 
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile2.png"]]; 
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile3.png"]]; 


CCAnimation *smileAnim = [CCAnimation 
         animationWithFrames:smileFrames delay:0.2f]; 

self.smileAction = [CCSequence actions: 
        [CCAnimate actionWithAnimation:smileAnim restoreOriginalFrame:NO], 
        [CCCallFunc actionWithTarget:self selector:@selector(smileFinished)], 
        nil]; 

,那麼只需在使用..

[sprite runAction:smileAction]; 

我添加了一個CCCallFunc到動畫的結尾,你可能希望它完成後恢復到空閒動畫。

當精靈解除分配時,不要忘記釋放任何保留的操作。

+0

感謝您的幫助......但是,我需要的是將動畫放置在不同的精靈畫面中並使用它們... – Suran 2011-04-14 04:38:47

+0

您的精靈畫面和動畫有多大???它們必須很大。據我所知,cocos2d不支持跨越不同spritesheets的動畫,主要是因爲batchnode對象負責連接到它的每個sprite的繪製方法。就像我說的那樣,你可以設計一種從父級spritesheet中刪除精靈的方法,並將它讀入你需要的精靈表中,但在我看來,你需要優化你的表單。 – Bongeh 2011-04-14 10:03:02

+0

我通過調整紋理來解決問題....感謝您的幫助......但是,我仍然有困惑......是不是可以同時加載兩張spritesheet?我的意思是,對於不同的精靈... – Suran 2011-04-18 04:56:28

相關問題