2010-10-03 125 views

回答

0

我遵循的一种方法是我从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并保持此数组中的所有实例...

当应用各种寻路算法或规则时每场比赛我访问的每个对象从这些阵列///

对不起,我英文不好,但是这是我发现至今完成工作,而不要求任何人的最佳途径;)

+0

嗯。我找到了一些东西。我已经定义了“行动”,并且我使用这个动作来动画我的精灵。但是当我想在这个相同的精灵上以后运行另一个动画时,我会收到EXC_BAD_ACCESS。但是当我使用“动作”,然后做这样的事情:“动作= [动画newAnim];”,然后运行在这个精灵上,一切工作正常。但是我不想在游戏中创建新的动作,但是在init函数中,然后运行它。 – msmialko 2010-10-04 18:35:30

+1

嗨,我知道这个问题有点老,但我现在有同样的问题,只是想检查一下,如果你弄明白了。 – 2011-09-14 01:40:38

0

可以使用总是一个行动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 

}