我有一個遊戲,我創建將實例化特定類型的精靈無數次。這個精靈會有一個簡單的循環動畫,因此,我假設我需要利用CCSpriteFrameCache
和CCSPriteBatchNode
來緩存用於驅動動畫過程的關聯精靈圖像。如何創建一個使用CCSpriteFrameCache&CCSpriteBatchNode對象的CSSprite類?
我一直在閱讀Raywenderlich.com上經常引用的How To Use Animations and Sprite Sheets in Cocos2D,我主要了解這個過程。
我的問題是他包含他的場景文件的代碼中的整個動畫序列。我無法解釋如何將這個相同的代碼放在我創建的子類(CCSprite
)中(或類似的類),並在我的遊戲場景中使用這個獨立的精靈。
換句話說,我的願望是有一個CCSprite
子類,可以在場景實現中實例化。一些參數被傳遞給子CCSprite
的構造函數,並且當精靈被添加到遊戲場景中時,精靈的動畫自動發生並且與任何場景代碼分開。
我該怎麼做? (未)澄清爲什麼我越來越糊塗
在雷的教程的步驟#2的
點,他指示添加用於他的動畫精靈爲self
一個孩子CCSpriteBatchNode
(這是遊戲場景)。如果我在CCSprite
子類實現中定義了CCSpriteBatchNode
,我是否需要將CCSpriteBatchNode
添加到我的父級場景中?我應該如何(正確)做到這一點?
而且,如果CCSpriteFrameCache
是一個單獨的類,它會引起我任何麻煩,在我CCSprite
構造函數添加[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"my_sprite.plist"];
,或者我應該只用一次這個功能,比如說,在我的應用程序的初始化?
一般來說,我只是困惑。我如何創建一個可以添加(多次)到一個場景的獨立的動畫精靈,而且我的場景不必擔心連線動畫序列,也不會陷入小型iOS處理器?
我真的不在乎我如何解決這個問題。也許我已經提出了一些不正確的假設。只要最終結果如上所述,我願意採取不同的途徑解決這個問題。
謝謝!
我認爲你應該在你的圖層類中做所有的事情,而不是在精靈內部做。 – 2013-02-25 14:05:35
同意,你的主要困惑來自假設你必須創建CCSprite的子類。這也不會改變你使用批處理節點的方式,它仍然會被添加到場景/圖層中,並且你的每個自定義精靈都會添加到它。只要所有精靈的動畫幀都在相同的紋理中(這只是一種很好的做法),就可以將精靈動畫化與精靈批處理完全分離。 – LearnCocos2D 2013-02-25 14:09:15
所以,你告訴我的是我沒有選擇 - 我必須從我的場景(即圖層)管理動畫?!我希望情況不是這樣,但我有點理解。 ( – RLH 2013-02-25 14:15:03