【问题标题】:iPhone cocos2d - Use the same animation actions for many spritesiPhone cocos2d - 对许多精灵使用相同的动画动作
【发布时间】:2010-10-03 13:18:16
【问题描述】:

嘿, 我正在为 iPhone 编写游戏,使用 cocos2d 框架。

我有 100 个精灵,我想在它们上运行相同的动画。 我必须为每个精灵创建 100 个单独的动作,还是我可以创建一个动作并在每个精灵上使用它?

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案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函数中,然后运行它。
      • 嗨,我知道这个问题有点老了,但我目前也有同样的问题,只是想看看你是否明白。
      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2011-11-05
      相关资源
      最近更新 更多