从时间轴播放 Spritebuilder 动画 - Cocos2d

Posted

技术标签:

【中文标题】从时间轴播放 Spritebuilder 动画 - Cocos2d【英文标题】:Play Spritebuilder animation from timeline - Cocos2d 【发布时间】:2014-06-13 13:57:53 【问题描述】:

我无法让它工作,这让我发疯。我只是想在它被调用时播放我的动画。我正在使用SpritebuilderCocos2d。我有一个CCNode,我正在使用它导入场景

#import "heroCharacter.h"
//Reference
CCNode *_heroContainer;
//Then

CCNode *hero = [CCBReader loadAsScene:@"heros/panda"];
[_heroContainer addChild:hero z:1 name:@"level1"];

CCNode 包含各种时间线动画。

我正在尝试使用以下方法调用动画:

CCBAnimationManager* animationManager = _heroContainer.userObject;
NSLog(@"AM: %@", animationManager);
[animationManager runAnimationsForSequenceNamed:@"ouch"];

AM 返回 Null 值。我该如何正确引用这个?

我认为这是因为我正在导入它并且它正在失去连接但不知道如何正确地做到这一点。

【问题讨论】:

【参考方案1】:

动画管理器不在在您要运行动画的节点上,但始终在 CCB 的根节点上。我也被那个绊倒了。 :)

例如,如果您的英雄是 GameScene.ccb 的一部分,那么您必须获取对 GameScene 根节点的引用(通常是自定义类)并从该对象获取动画管理器。

如果你的英雄在另一个被 GameScene.ccb 引用的 CCB(比如 player.ccb)中,并且你想播放的时间线动画是在 player.ccb 中编辑的,那么你必须从子文件中获取动画管理器GameScene.ccb 中引用 player.ccb 的节点。每个 CCB 的根节点都包含动画管理器,用于存储其 CCB 的时间线动画。

请注意,v3.1 将具有 animationManager 属性,如果您已经在 v3.1(开发分支)上,那么您必须使用该属性而不是 userObject

【讨论】:

以上是关于从时间轴播放 Spritebuilder 动画 - Cocos2d的主要内容,如果未能解决你的问题,请参考以下文章

无论我是在主时间轴动画还是子/孙 MC 动画上暂停,如何从最后一个位置恢复动画?

在 Cocos2D 和 Spritebuilder 中为 Sprite 设置动画

Cocos2D 动画问题

Cocos Creator Spine动画时间轴(事件时间轴,骨骼时间轴)

使用ivx滑动时间轴制作动画效果的经验总结

layaAir引擎制作游戏的图集动画时间轴动画和骨骼动画总结二