参考:

Egret官方换装动画

Egret换装三种方式 CSDN(全局换装)

egret使用DragonBones实现简单的换装

换装,主要是替换任意插槽的图片,来达到局部换装的目的。

游戏中可以只制作一个人物动画,然后局部替换100套衣服、100套发型或者100种眼睛。甚至可以把人和衣服所有插槽都换了。

下图替换了衣服。

     

一、创建一个测试骨骼动画

  1. public armatureDisplay:dragonBones.EgretArmatureDisplay;
  1. let factory = dragonBones.EgretFactory.factory;
  2. factory.parseDragonBonesData(RES.getRes("test_ske_dbbin"));
  3. factory.parseTextureAtlasData(RES.getRes("test_tex_json"), RES.getRes("test_tex_png"));
  4. this.armatureDisplay = factory.buildArmatureDisplay(name);
  5. this.addChild(this.armatureDisplay);}

  

二、封装的换装类

  1. /**
  2. * 替换插槽
  3. * @param slotName 插槽名称 原材料
  4. * @param textureName 图片名 xxx_png
  5. * @param 偏移量
  6. */
  7. public setNewSlot( slotName:string, textureName:string ,offsetX:number=0, offsetY:number=0){
  8. var slot:dragonBones.Slot = this.armatureDisplay.armature.getSlot(slotName);
  9. var b:egret.Bitmap = new egret.Bitmap();
  10. b.texture = RES.getRes(textureName);
  11. b.x = slot.display.x;
  12. b.y = slot.display.y;
  13. b.anchorOffsetX = b.width/2 + offsetX;
  14. b.anchorOffsetY = b.height/2 + offsetY;
  15. slot.setDisplay( b );
  16. }

三、换装。替换人和手的插槽。

  1. this.setNewSlot("人", "people_png");
  2. this.setNewSlot("手", "hand_png");

四、全局换装

全局换装主要是使用replaceTexture来进行替换纹理图。

假设有两套皮肤分别是skin1.png和skin2.png,则两张图必须配置文件和图片位置都一样才能进行全局换装

  1. let armatureDisplay:dragonBones.EgretArmatureDisplay;
  2. let factory = dragonBones.EgretFactory.factory;
  3. factory.parseDragonBonesData(RES.getRes("test_ske_dbbin"));
  4. factory.parseTextureAtlasData(RES.getRes("test_tex_json"), RES.getRes("test_tex_png"));
  5. armatureDisplay = factory.buildArmatureDisplay(name);
  6. this.addChild(armatureDisplay);}
  1. armatureDisplay.armatureDisplay.armature.replaceTexture(RES.getRes("skin1_png")); //皮肤1
  1. armatureDisplay.armatureDisplay.armature.replaceTexture(RES.getRes("skin1_png")); //皮肤2

  

  

 

DragonBones龙骨换装(局部换装+全局换装)的更多相关文章

  1. npm install 装本地一直安装全局问题

    想用npm安装一些模块,不管怎么装,一直装作全局. 以为是node有问题,重装了N次,却还发现这个问题. 困惑几天无果, 偶然间通过此文章发现,npm存在配置文件:https://www.sitepo ...

  2. form表单钩子,局部钩子和全局钩子

    form表单源码解析: 局部钩子: 全局钩子:

  3. JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用

    转自:http://blog.csdn.net/xyang81/article/details/44657385   这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景和注意事项.可能看 ...

  4. Vue(2)- v-model、局部组件和全局组件、父子组件传值、平行组件传值

    一.表单输入绑定(v-model 指令) 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. ...

  5. Vue 2 --v-model、局部组件和全局组件、父子组件传值、平行组件传值

    一.表单输入绑定(v-model 指令) 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. ...

  6. Django学习笔记(14)——AJAX与Form组件知识补充(局部钩子和全局钩子详解)

    我在之前做了一个关于AJAX和form组件的笔记,可以参考:Django学习笔记(8)——前后台数据交互实战(AJAX):Django学习笔记(6)——Form表单 我觉得自己在写Django笔记(8 ...

  7. Django框架(十四)-- forms组件、局部钩子、全局钩子

    一.什么是forms组件 forms组件就是一个类,可以检测前端传来的数据,是否合法. 例如,前端传来的邮箱数据,判断邮件格式对不对,用户名中不能以什么开头,等等 二.forms组件的使用 1.使用语 ...

  8. Django框架(十五)—— forms组件、局部钩子、全局钩子

    目录 forms组件.局部钩子.全局钩子 一.什么是forms组件 二.forms组件的使用 1.使用语法 2.组件的参数 3.注意点 三.渲染模板 四.渲染错误信息 五.局部钩子 1.什么是局部钩子 ...

  9. js中的局部函数和全局函数的调用

    //局部函数和全局函数的特点 function fc1(){ var name ="chenhao"; function fc2(){ var age = 30; alert(na ...

随机推荐

  1. recovery中英对照表 recovery大全图解

    一:Recovery主界面 ---reboot system now                         重启手机(刷机完毕选择此项就能重新启动系统) ---apply SDcard:up ...

  2. android EditText设置弹出数字输入法键盘

    <EditText      android:id="@+id/edit_digit_input"      android:layout_width="wrap_ ...

  3. windows下redis启动失败提示maxheap flag

    windows下redis启动失败 D:\redis>redis-server.exe redis.conf [] Oct ::39.789 # The Windows version of R ...

  4. MVC阻止用户注入JavaScript代码或者Html标记

    使用HttpUtility.HtmlEncode("")将字符串进行过滤处理

  5. 运行jsp常犯的错误

    error 未启动tomcat服务 tomcat端口是否已改动 404: 未部署web应用 运行时URL输入错误 检查文件的存放位置(存放文件的目录无法对外引用,如WEB-INF , META-INF ...

  6. 高可用(HA)架构

    http://aokunsang.iteye.com/blog/2053719   浅谈web应用的负载均衡.集群.高可用(HA)解决方案 http://zhuanlan.51cto.com/art/ ...

  7. Android图片的合成示例

    package com.example.demo; import android.os.Bundle; import android.app.Activity; import android.grap ...

  8. Qt打包部署程序自动查找依赖DLL工具windeployqt

    qt编译好一个exe程序之后,部署到一台没有开发环境的机器上,需要一起拷贝其依赖的dll文件.这时需要一个windeployqt工具来帮忙,因为手动拷贝的话容易遗漏. https://blog.csd ...

  9. transformNative_libsWithStripDebugSymbolForDebug

    local.properties #ndk.dir=C\:\\My_other\\Android_SDK\\ndk-bundle  把NDK注释掉就ok了

  10. Windows下mysql重设密码

    Windows下的实际操作如下 .关闭正在运行的MySQL,即关闭服务. .打开DOS窗口,转到mysql\bin目录. .输入 mysqld --skip-grant-tables 回车.如果没有出 ...