骨骼动画换装之后有些不显示怎么回事呢

我用的是0.4的版本,因为项目是之前做的,
我有一个骨骼动画mMoveAr,他包含了角色走动,站立,跳跃等动作,每个动作分为两个骨骼,角色和武器;
现在是要给角色换装
我是这样做的,首先是所有武器骨骼的名字数组
std::string movswordBone;

movswordBone = std::string(“jumpto_right_sword”);
movswordBone = std::string(“jumpto_left_sword”);
movswordBone = std::string(“stand_right_sword”);
movswordBone = std::string(“stand_left_sword”);
movswordBone = std::string(“move_right_end_sword”);
movswordBone = std::string(“move_right_ing_sword”);
movswordBone = std::string(“move_right_start_sword”);
movswordBone = std::string(“move_left_end_sword”);
movswordBone = std::string(“move_left_ing_sword”);
movswordBone = std::string(“move_left_start_sword”);
这个数组包含所有武器的骨骼……

然后是换装

for (int i = 0; i < 16; i++)
{
if (movswordBone*.length() <= 0)
break;
CCSpriteDisplayData* displayData=new CCSpriteDisplayData();
displayData->setParam(pEquipment->imageName.c_str());
CCBone* bone = mMoveAr->getBone(movswordBone*.c_str());
bone->addDisplay(displayData, 1);
bone->changeDisplayByIndex(1, true);
}

但是替换之后,就只一个动作的骨骼被替换了,其它的都和之前一样,,而且角色走动一会后,所有的都和之前一样了,为什么会这样呢
换装的代码我是在论坛上看的,不知道有没有什么理解错了,,,之前一个CCArmature只包含一个动作的时候,换装很正常,,求大神指教呀

**

看看动画文件里面的display index是不是有问题

也可以 直接创建 CCSkin add进去

没有问题:之后我的解决方法是每播放一个动画之前都调用一次该动画对应的骨骼的changeDisplayByindex这样就可以,但还是觉得不应该是这个样子

CCSkin?这个没用过哦,,,怎么用的

动画文件里面每个动画 都会有相应的DI 所以changeDisplayByindex设置的一般也要相应的DI
如果不想这样做的话 把动画剁碎了 做父子动画 这样父动画 就可以不接触这个部分 cocostudio老版本做不了动画嵌套 现在的就不清楚了
所以在做动画文件的时候这个东西要注意 不然写程序的就蛋疼了
用CCSkin sample里面有例子 它是把displayData用ccsprite的封装 应该也要这些设置 因为这个是它动画执行的逻辑

有成功的换装案例吗?还有就是那个weapon.xml文件是用什么工具编辑的?

您好,目前虽然有换装的案例,但是没有切换多个动画的,我们已经开始着手更新sample示例了。

好期待你的sample例子。我建议做例子的时候考虑下,比如我需要做一个换装系统,我需要换武器、帽子、披风、肩膀、衣服、鞋子、饰品等这些部位,假设需要换的装备很多,这样的话,这些资源是不是不应该跟角色的骨骼动画打包在一起(装备的数量可能会不断增加)。还有我看了官方的TestCpp给的例子,png、plist、xml这3个文件是用什么工具导出的。

您好,工具里的资源较旧,其实用动画编辑器导出的时候选择导出全部大图即可。当然,您也可以在编辑动画之前用其他工具将图片打包成大图。

案例在哪儿啊 ?