Cocos2d V3 和 Spritebuilder - 时间轴动画不运行后续时间

Posted

技术标签:

【中文标题】Cocos2d V3 和 Spritebuilder - 时间轴动画不运行后续时间【英文标题】:Cocos2d V3 and Spritebuilder - Timeline animation not running subsequent times 【发布时间】:2014-08-06 18:17:45 【问题描述】:

我有一个包含时间线动画的 CCB 文件。我像这样加载文件。

CCSprite *spriteAnimation = (CCSprite*)[CCBReader load:@"MyGreatAnimation"];
spriteAnimation.paused = TRUE;

稍后,我将其添加到场景中并运行动画

[MyScene addChild:spriteAnimation];
CCAnimationManager* animationManager = _deletionAnimaion.userObject;
[animationManager runAnimationsForSequenceNamed:@"Default Timeline"];

这很棒。我的动画运行。然后我从场景中删除spriteAnimation,直到我再次需要它为止。

[spriteAnimation removeFromParent];

.

问题

下次将动画添加到场景中时,我不知道如何让动画运行。

我试过了:

[animationManager jumpToSequenceNamed:@"Default Timeline" time:0];

还有..

[animationManager runAnimationsForSequenceNamed:@"Default Timeline"];

但动画似乎没有运行。如果此时我调用:

spriteAnimation.userObject.runningSequenceName

查看运行顺序,返回NULL

.

我的问题

如何任意重复运行时间轴动画?

要清楚,我不是在问循环动画。我想在需要时从第 1 帧开始。

【问题讨论】:

在保留属性中保留 spriteAnimation? 【参考方案1】:

如果你反复需要它,你不应该把它从场景中移除:

[spriteAnimation removeFromParent];

相反,只是让动画暂时不可见:

spriteAnimation.visible = NO;

稍后让它再次可见。

毕竟,当您删除一个节点时,它会从场景层次结构中消失,除非您 addChild: 它回到我在上面的代码中看不到的位置。

【讨论】:

对不起,省略了 addChild: 形成我上面的示例代码。我正在使用 addChilde: 但它没有用。我也尝试设置 visible=no,但也没有用。最终起作用的是将不透明度设置为 0 并设置屏幕的位置(因此它不会包含在绘图中)。然后当我再次想要它时,我只是将它移到适当位置并将不透明度设置为 1。我想知道从我的父级移除它的行为是否会清除动画?

以上是关于Cocos2d V3 和 Spritebuilder - 时间轴动画不运行后续时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在Cocos2D v3.x中正确推送和弹出场景

如何在 Cocos2d v3 中设置 CCTextField

Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法

Cocos2D v3 CCParallaxNode 滚动无法让玩家保持焦点

如何在 Cocos2d v3 中获取一个类型的孩子

无法检测到 CCNode 上的触摸 - cocos2d v3.0