cocos2d-x 程序如何实现骨骼动画换装?

-仅此而已 2013-07-26 02:53:16
这样创建的
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("xiaorenAN/xiaorenAN", "", "GameSprite_xiaoren.png", "GameSprite_xiaoren.plist", "spXml/xiaoren.xml");
据我知道的应该是 获取骨头
Armature* armature1 =Armature::create("xiaorenAN/xiaorenAN");//读取Armature_data
Bone* bone = armature1->getBone("xiaoren-wuqiR");
我想要把小人的武器 换成 xinwuqi.png 应该怎么实现呢?
求大神帮忙 ~~~谷歌 已经看了好几十遍了 各种帖子
...全文
8688 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
执着的挖土 2014-11-06
  • 打赏
  • 举报
回复
前面代码都一样,只有换肤的时候走下面代码,格式如下,
 
	const std::string yellowCat = "yellow";// 范例,你替换的皮肤名称
        CCDictElement *ele = NULL;
        CCDICT_FOREACH(dic, ele) {
            CCBone *bone = (CCBone*)(ele->getObject());
            std::string bonename = bone->getName();
            bonename.replace(0, 3, yellowCat);
            bonename.append(".png");

            CCSkin *skin = CCSkin::createWithSpriteFrameName(bonename.c_str());
            int index = bone->getDisplayManager()->getCurrentDisplayIndex();
            bone->addDisplay(skin, index);
            bone->changeDisplayWithIndex(index, true);
        }
奥特曼VS怪兽 2014-09-29
  • 打赏
  • 举报
回复
愚钝 求代码
Elyn Huang 2014-03-19
  • 打赏
  • 举报
回复
先获取到骨骼CCBone 然后创建CCSkin 添加到ccBone中,使用addDisplay
YuNansen 2014-02-28
  • 打赏
  • 举报
回复
我也遇到这个问题了,求指导一下,谢谢~
yjzflag 2014-02-28
  • 打赏
  • 举报
回复
转一个骨骼动画换装的实例你参考一下。 一、我们直接在COCOS2D-X自带的HelloCpp的工程中添加代码即可.我们在初始化中添加如下代码: [cpp] CCSize szWin = CCDirector::sharedDirector()->getVisibleSize(); CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("knight.png","knight.plist","knight.xml");//加载骨骼动画文件 CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("weapon.png","weapon.plist","weapon.xml");//加载骨骼动画文件 setTouchEnabled(true);//开启触屏响应 pArmature = CCArmature::create("Knight_f/Knight"); pArmature->getAnimation()->playByIndex(0);//播放第一个动作 pArmature->setPosition(ccp(szWin.width/2-100,szWin.height/2)); pArmature->setScale(1.5f); this->addChild(pArmature); std::string sWeaponName[] = {"weapon_f-sword.png", "weapon_f-sword2.png", "weapon_f-sword3.png", "weapon_f-sword4.png", "weapon_f-sword5.png"}; CCSpriteDisplayData sprDisplayData; for (int i=0;i<sizeof(sWeaponName)/sizeof(sWeaponName[0]);i++) { sprDisplayData.setParam(sWeaponName[i].c_str()); pArmature->getBone("weapon")->addDisplay(&sprDisplayData,i); } 二、由于我们用到了COCOS2D-X中extensions中的类,故需要加入对应的目录和相应的头文件以及lib文件 ①、在 工程->属性->配置属性->VC++目录->包含目录中添加extensions文件夹的路径:$(SolutionDir)\extensions ②、添加头文件、命名空间以及涉及的库文件如下: [cpp] #include "CCArmature/utils/CCArmatureDataManager.h" #include "CCArmature/CCArmature.h" #pragma comment(lib,"libBox2d.lib") #pragma comment(lib,"libExtensions.lib") using namespace extension; 三、注册触屏分配器 [cpp] void TestUseMutiplePicture::registerWithTouchDispatcher() { CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0, true); } 三、响应触屏事件以实现换装.代码如下: [cpp] bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { static int nDisplayIndex = -1; ++nDisplayIndex; nDisplayIndex = (nDisplayIndex)%5; pArmature->getBone("weapon")->changeDisplayByIndex(nDisplayIndex,true); return false; }
雪上飘雨 2014-02-26
  • 打赏
  • 举报
回复
我也遇到这个问题了,求指导一下,谢谢,我的QQ是1109422209
-仅此而已 2013-07-31
  • 打赏
  • 举报
回复
我也没实现,所以才来提问的。竟然木有人。。。
ska1227 2013-07-27
  • 打赏
  • 举报
回复
你解决了 骨骼换装的问题了吗 能给我发一个demo吗? ska1227@gmail.com

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧