【问题标题】:Cocos2d - Sprite not animatingCocos2d - 精灵没有动画
【发布时间】:2013-12-10 22:15:29
【问题描述】:

我有一个精灵要添加到场景中并对其应用动画,但动画没有开始。 这是代码,帧已经添加到数组(explosionFrames)中,当我将它们应用于精灵时,我可以单独看到这些帧。

CCSprite *expoSprite = [CCSprite spriteWithSpriteFrame:explosionFrames[0]];

expoSprite.position = bombSprite.position;


CCAnimation *explosionAnimation = [CCAnimation animationWithSpriteFrames:explosionFrames];


[expoSprite runAction:[CCSequence actions:[CCAnimate actionWithAnimation:explosionAnimation],nil]];


[n addChild:expoSprite];

任何建议将不胜感激。

【问题讨论】:

  • 如何创建爆炸帧?您是在某处调用 stopAllActions,还是在循环中重新运行动画动作(即计划选择器中的每一帧?)
  • explosionFrames 是一个 NSMutableArray,帧是从 CCSpriteBatchNode 添加到其中的
  • 您可以发布实际代码吗?以及上述代码的上下文,即它在哪个函数中以及该函数在何处或如何被调用?
  • 上面'code'中的对象是什么?请公开您的代码。
  • n 是一个 CCSpriteBatchNode,我没有透露周围的代码,因为我已经能够将此代码隔离为问题代码

标签: ios objective-c cocos2d-iphone


【解决方案1】:

您是否在 n 的类上覆盖了 onEnter

你记得打电话给[super onEnter]吗?

-(void) onEnter
{
    [super onEnter];
    //Other code
}

当我有一个没有运行操作的节点时,这几乎总是问题。

【讨论】:

  • 或将精灵作为子节点添加到不处于“运行”状态的节点。在这种情况下,OP 似乎正在使用 CCSprite,因此除非基础 cocos2d 类被篡改,否则我怀疑 onEnter 被适当地调用了。
【解决方案2】:

首先,您应该在运行任何操作之前将 sprite 添加为子项。二、可以写

[expoSprite runAction:[CCSequence actions:[CCAnimate actionWithAnimation:explosionAnimation],nil]];

如果你要添加一些东西到序列或

[expoSprite runAction:[CCAnimate actionWithAnimation:explosionAnimation]];

而不是

[expoSprite runAction:[CCSequence actions:[CCAnimate actionWithAnimation:explosionAnimation],nil]];

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多