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

如何使用cocos2d

iPhone OpenGL ES 2.0 与 Cocos2D 的混合产生了意想不到的结果

我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?

如何区分ios中的动画和单个精灵表?