iPhone cocos2d - 对许多精灵使用相同的动画动作
Posted
技术标签:
【中文标题】iPhone cocos2d - 对许多精灵使用相同的动画动作【英文标题】:iPhone cocos2d - Use the same animation actions for many sprites 【发布时间】:2010-10-03 13:18:16 【问题描述】:嘿, 我正在为 iPhone 编写游戏,使用 cocos2d 框架。
我有 100 个精灵,我想在它们上运行相同的动画。 我必须为每个精灵创建 100 个单独的动作,还是我可以创建一个动作并在每个精灵上使用它?
【问题讨论】:
【参考方案1】:您始终可以使用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
【讨论】:
【参考方案2】:我遵循的一种方法是从 sprite 类创建派生类并在类初始化中分配动作。
例如我必须生成 10-100 个敌人精灵
我将创建一个从 CCSprite 派生的类enemyAtoor.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 NSMuTableArrayenemyLoaded 并将所有实例保存在这个数组中......
当根据游戏应用各种寻路算法或规则时,我从这些数组中访问每个对象 ///
抱歉英语不好,但这是我迄今为止发现的最好的方法,无需询问任何人即可完成工作;)
【讨论】:
嗯。我发现了一些东西。我已经定义了“动作”,我使用这个动作来动画我的精灵。但是当我想稍后在同一个精灵上运行另一个动画时,我会收到 EXC_BAD_ACCESS。但是当我使用“动作”,然后这样做:“action = [Animation newAnim];”,然后在这个精灵上运行,一切正常。但我不想在游戏过程中创建新动作,而是在init函数中,然后运行它。 嗨,我知道这个问题有点老了,但我目前也有同样的问题,只是想看看你是否明白。以上是关于iPhone cocos2d - 对许多精灵使用相同的动画动作的主要内容,如果未能解决你的问题,请参考以下文章
iPhone,Cocos2D - 在触摸屏时向左/向右移动精灵
iPhone 上的 Cocos2d:使用在单独的类文件中定义的 Sprite
iPhone OpenGL ES 2.0 与 Cocos2D 的混合产生了意想不到的结果