嘿, 我正在用iPhone編寫遊戲,使用cocos2d框架。iPhone cocos2d - 對許多精靈使用相同的動畫動作
我有100個小精靈,我想對它們運行相同的動畫。 我是否必須爲每個精靈創建100個單獨的動作,還是我可以創建一個動作並在每個精靈中使用它?
嘿, 我正在用iPhone編寫遊戲,使用cocos2d框架。iPhone cocos2d - 對許多精靈使用相同的動畫動作
我有100個小精靈,我想對它們運行相同的動畫。 我是否必須爲每個精靈創建100個單獨的動作,還是我可以創建一個動作並在每個精靈中使用它?
我遵循的一種方法是我從sprite類創建派生類並在類初始化中分配動作。
比如我有產生10-100敵人精靈
我會從CCSprite
派生的類enemyActoor.mm他們我保持功能
+(void)initwithParamters:(CCPoint)spwanPoint frames:(NSString *)plist{
mummyActor *tempInstance =[mummyActor spriteWithWatever suites ur reqirment];
//do all stuff here
//load actions
return tempInstance;
}
//other methods to call actions or access mutators
,當我需要生成這些敵人我創建n NSMuTableArray enemyLoaded並保持此數組中的所有實例...
當應用各種尋路算法或規則時每場比賽我訪問的每個對象從這些陣列///
對不起,我英文不好,但是這是我發現至今完成工作,而不要求任何人的最佳途徑;)
可以使用總是一個行動id
,然後分配你的精靈,一個動作。像這樣
id myAction = [CCMoveBy actionWithDuration:0.2f position:myPoint];
id mySecondAction = [CCRotateBy actionWithDuration:0.2f angle:myAngle];
id actionSequence = [CCSequence actions: myAction, mySecondAction, nil];
然後通過所有你的精靈運行,並附加動作。如果你有一個陣列我們for in
方法,因爲它更快。
for (CCSprites mySprites in myArray) {
//attach actions to sprites code here
}
嗯。我找到了一些東西。我已經定義了「行動」,並且我使用這個動作來動畫我的精靈。但是當我想在這個相同的精靈上以後運行另一個動畫時,我會收到EXC_BAD_ACCESS。但是當我使用「動作」,然後做這樣的事情:「動作= [動畫newAnim];」,然後運行在這個精靈上,一切工作正常。但是我不想在遊戲中創建新的動作,但是在init函數中,然後運行它。 – msmialko 2010-10-04 18:35:30
嗨,我知道這個問題有點老,但我現在有同樣的問題,只是想檢查一下,如果你弄明白了。 – 2011-09-14 01:40:38