【已解决】导出的骨骼动画文件要如何加载进程序?

用这样的代码加载
ArmatureDataManager::getInstance()->addArmatureFileInfo(“hero.png”,“hero.plist”,“SkeletonHero.json”);
mArmature = Armature::create(“SkeletonHero”);
mArmature->getAnimation()->play(“idel”,15,-1);
mArmature->setAnchorPoint(Vec2(0.5, 0));
mArmature->setPosition(getContentSize().width/2,0);
mArmature->setScale(0.1);
addChild(mArmature);

结果会出错,提示Assert failed: AnimationData not exist!
附件是我的骨骼动画文件。

你确定你附件里的是骨骼动画吗,,,,。。。。。。

不是吗?我在cocosstudio里编辑好的,在cocosstudio里面都能正常播放,以前没用过cocostudio,都是照着文档撸的,应该不会错吧,除非文档错了。
另外,我导出的场景文件SceneReader::getInstance()->createNodeWithSceneFile(“MainScene.csb”)用这个代码加载也是null,这是怎么回事。用这个cocosstudio感觉好受挫折。

朋友,我今天也遇到跟你类似的问题了。
我今天用最新的cocos studio2.3.3版,生成了一个骨骼动画,然后发布生成的资源只有各个部位的png文件以及一个json文件。
问题是官方给的两种骨骼动画Armature和Skeleton,它们通过文件加载骨骼动画的方式我都试了,压根无法从发布的json文件里加载动画。
然后它们使用的json文件我从tests里找到了,没有一个和我生成的json格式一致……
另外,官方的Skeleton创建时需要一个.atlas,我发布的资源也没有这个格式的文件。

总而言之,就是我拿最新版cocos studio生成的动画资源,没找到任何办法加载!

另外,你的附件我看了下,那个json文件的格式跟我导出的格式是一模一样的!
但官方test里用的骨骼动画json文件格式跟咱们导出的格式是完全不一样的!

为什么啊!!!

我也想知道为什么

楼主,我用cocos studio2.3.3生成的csb文件,经过另一个人的帖子的提示,我弄出来了,不过还有些问题。。。
代码如下:

cocostudio::timeline::SkeletonNode* skeleton = (cocostudio::timeline::SkeletonNode*)CSLoader::createNode(“bone_animations/Skeleton.csb”);
//cocostudio::timeline::SkeletonNode* skeleton = (cocostudio::timeline::SkeletonNode*)CSLoader::getInstance()->createNodeFromJson(“bone_animations/Skeleton.json”);//估计是导出的json文件格式不符,会报错
skeleton->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
this->addChild(skeleton);

timeline::ActionTimeline *at = CSLoader::createTimeline("bone_animations/Skeleton.csb");
at->play("animation0", false);
skeleton->runAction(at);

但是还存在问题:
1.我的素材用的是零散的png图片。我把png和csb资源放到了Resources/bone_animations/这个文件夹下面。
csb文件加载没问题,但图片却识别不出来了!后来我把所有素材直接放到Resource中就OK了。。。
2.我再cocos studio中预览的骨骼动画完全没问题,但是目前加载出来实际运行效果不对,所有的部件之间距离好远。。。

这个方法确实能正确加载了。
1.你可以在FileUtils::getInstance()->setSearchPaths(path);的path中加入bone_animations这个路径,你的第一个问题应该就可以解决了。
2.我自己做的骨骼动画加载以后没有你遇到这个距离离得远的问题,所以可能是你拿来测试的csb文件的分辨率和你代码里设置的分辨率不对。

多谢了,完美搞定。另外,就是我发现最新版的cocos2d-x的AppDelegate.cpp中,设置分辨率不能再在applicationDidFinishLaunching()中改了。
我之前在这里面直接改的,后面设定设计分辨率的时候就出问题了,导致的骨骼动画中每个部件之间的距离变大。
应该是在AppDelegate.cpp,的最前面,直接修改静态数据即可:
static cocos2d::Size designResolutionSize = cocos2d::Size(1024, 600);//屏幕尺寸修改这里,千万不要修改后面的代码
static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);

谢谢提醒,我没有用这套机制做多分辨率适配,我觉得这种方法要几套图太蛋疼了
我只用这个,然后图片都按这个分辨率做,一份就够了
director->getOpenGLView()->setDesignResolutionSize(1136, 640, ResolutionPolicy::FIXED_HEIGHT);