Cocos2D:多个动作:CCMoveTo CCAnimate

时间:2013-05-08 19:53:03

标签: objective-c cocos2d-iphone ccaction

我不明白,我绝对不能让它工作,我想要一系列动作来播放动画并使用CCAnimate ans CCMoveTo类来移动精灵。是否存在关于这些类的错误或特殊情况,因为在这样的行为的CCS序列中将它串起来时它不会移动或动画。

    action = [CCSequence actions:
                              [CCMoveTo actionWithDuration:moveDuration position:touchLocation],
                              [CCAnimate actionWithAnimation:self.walkingAnim],
                              [CCCallFunc actionWithTarget:self selector:@selector(objectMoveEnded)], nil];
 [self runAction:action];

2 个答案:

答案 0 :(得分:3)

如果您希望移动和动画操作运行并行,您可以使用:

选项1 :使用CCSpawn而不是CCSequence。需要CCSequence,因为您希望在完成后调用函数。

id action = [CCSpawn actions:
                              [CCMoveTo actionWithDuration:moveDuration position:touchLocation],
                              [CCAnimate actionWithAnimation:self.walkingAnim], 
                               nil];

id seq = [CCSequence actions:
                              action,
                              [CCCallFunc actionWithTarget:self selector:@selector(objectMoveEnded)], 
                               nil];

[self runAction:seq];

Option2 :只需多次添加任何操作,即可在paralel中运行。由于func-call再次需要CCSequence:

id action = [CCSequence actions:
                              [CCMoveTo actionWithDuration:moveDuration position:touchLocation],
                              [CCCallFunc actionWithTarget:self selector:@selector(objectMoveEnded)], 
                               nil];
[self runAction:action];
[self runAction:[CCAnimate actionWithAnimation:self.walkingAnim]];

答案 1 :(得分:1)

这个序列的作用是:

  • 将自己移至目的地
  • 一旦到达目的地,播放行走动画
  • 当漫步动画结束时,运行选择器

我打赌你打算单独和同时运行动作和动画动作(每个动作都有自己对runAction的调用),而不是在序列中。