首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问CCB根节点动画时间线- Cocos2D

访问CCB根节点动画时间线- Cocos2D
EN

Stack Overflow用户
提问于 2014-06-18 10:28:17
回答 1查看 430关注 0票数 1

这让我快疯了。我试图访问CCB根节点,这样我就可以使用SpriteBuilder/Cocos2d获得动画时间线。

我有heroCharacter.m,这是我的动画CCNode的自定义类。

我正在将它导入bedroomScene.m。使用

代码语言:javascript
复制
CCNode *_heroContainer;

在我看来

代码语言:javascript
复制
//Import Hero Scene
    CCNode *hero = [CCBReader loadAsScene:@"heros/panda"];
    [_heroContainer addChild:hero];

当我运行animationManager时,它是一个空值。

代码语言:javascript
复制
CCBAnimationManager* animationManager = _heroContainer.userObject;
        NSLog(@"AM: %@", animationManager);

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-18 11:46:32

首先,当您将CCB添加为另一个节点的子节点时,应该使用load:而不是loadAsScene:

代码语言:javascript
复制
CCNode *hero = [CCBReader load:@"heros/panda"];
[_heroContainer addChild:hero];

使用上述代码,hero将成为heros/panda CCB文件的根节点。

通过使用loadAsScene的代码,根节点被包装在CCScene对象中,因此hero指向CCScene实例,而不是CCB的根节点。CCScene的子数组只包含一个子节点,即实际的CCB根节点。

接下来,将加载的CCB添加为_heroContainer的子级。但是,给定CCB的动画管理器总是位于CCB的根节点上,这意味着(如果使用load:而不是loadAsScene:)动画管理器位于hero对象中,它不能位于_heroContainer节点中:

代码语言:javascript
复制
CCBAnimationManager* animationManager = hero.userObject;
NSLog(@"AM: %@", animationManager);

注意,如果升级到cocos2d的v3.1,您可以简单地使用hero.animationManager访问CCBAnimationManager。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24283218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档