CocoStudio基础教程(4)骨骼动画的动态换肤
2015-09-24 17:26
441 查看
1、概述
游戏中人物的状态会发生改变,而这种改变通常要通过局部的变化来表现出来。比如获得一件装备后人物形象的改变,或者战斗中武器、防具的损坏等。这些变化的实现就要通过动态换肤来实现。2、运行到程序
运行脚本,创建一个新项目。将导出文件复制到Resource中。修改init的代码:
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ArmatureDataManager::getInstance()->addArmatureFileInfo("changeShape.ExportJson"); Armature* arm = Armature::create("changeShape"); arm->setPosition(Point(visibleSize.width/2,visibleSize.height/2)); arm->setTag(1); addChild(arm); arm->getAnimation()->play("go"); setTouchEnabled(true); return true; }
3、添加与更换皮肤
添加皮肤方式分动态添加与静态添加两种。动态添加是指在编辑器中更改,这样可以不需要重新编译程序。静态添加则是将其写死在程序中,通常这种做法不推荐,但我们也应该会使用。更换的做法是我们首先要取到具体的骨骼,然后更改它显示的“皮肤”。3.1动态添加
在“动画编辑”的模式下选中我们的武器。然后将我们需要更换的武器资源依次拖动到“渲染资源”中。点开下拉列表,我们能看到添加过的资源,右击也可以删除。添加好后,保存并导出,在工程中,我创建了一个int的成员变量displayIndex。并在init中初始化为0。接下来我们加入点击响应来更换皮肤。
void HelloWorld::onTouchesEnded(const std::vector<Touch*>& touches, Event* event) { ++displayIndex; displayIndex = (displayIndex) % 4; ((Armature*)getChildByTag(1))->getBone("weapon")->changeDisplayByIndex(displayIndex, true); }
3.2静态添加
使用静态添加有一点要注意:要保证创建的资源已经导出了。我们在init中添加://…… Skin* skin = Skin::createWithSpriteFrameName("sliderProgress.png"); arm->getBone("weapon")->addDisplay(skin, 4); //……
并将点击响应中循环量从4更改为5,编译运行即可看到效果。
4、总结
创建皮肤分为动态和静态两种形式。动态是将相应的资源直接导出。静态则是要写到代码中进行创建。虽然这种也是动态创建,但相较于json配置,我还是倾向于称它为“静态”。叫什么不重要,哪种方便用哪种。换肤则都是要取到对于的骨骼,然后更改显示。相关文章推荐
- CocoStudio基础教程(3)在程序中处理cocoStudio导出动画
- cocos2d lua 引用protobuf进行通信
- Cocos中引用json初始化游戏
- cocosbuilder中使用字体描边时,字符重叠,间距过小问题
- cocos2d-x设计模式发掘之一:单例模式
- 2dx解析cocosbuilder中使用layer时的缺陷
- CocoStudio基础教程(2)关联程序逻辑与cocoStudio导出文件
- CocoStudio基础教程(1)创建UI并载入到程序中
- Quick-cocos2d-x3.3 Study (二十一)--------- 随机数
- cocos2d-x 3.x 血条
- cocos2d-x设计模式发掘之一:单例模式
- Cocos2d-js创建构造注册事件监听回调函数
- cocos2dx-2.x CCFileUtils文件管理分析(2)
- cocos2d-x 移植android竖,横屏设置
- Cocos2d场景切换效果汇总
- cocos2dx-3.8.1在Windows--vs2013上的项目创建
- cocos2d-x3.6获取csb文件里的按钮控件
- cocosstudio 出现项目由更新版本编辑器产生 无法打开的解决方法
- Cocos2d粒子系统二
- cocos基础教程(12)点击交互的三种处理