龙骨的图片是绑定在卡槽上的.并且是一对一的关系.所以可以通过对骨架的卡槽上绑定的图片的更换来实现另一种换皮的效果.

换皮的核心代码:

    //针对slot设置其新内容private setNewSlot( slotName:string, textureName:string ){//方法1var slot:dragonBones.Slot = this._armature.getSlot( slotName );var b:egret.Bitmap = new egret.Bitmap();b.texture = RES.getRes( textureName );b.x = slot.display.x;b.y = slot.display.y;b.anchorOffsetX = b.width/2;b.anchorOffsetY = b.height/2;slot.setDisplay( b );//方法2,仅限于slot中内容为Bitmap//var slot:dragonBones.Slot = this._armature.getSlot(slotName);//slot.display.texture = RES.getRes(textureName);}

我做了一个工具:

module bg2tool{/*** 龙骨动画工具--单例* @author Husz*/export class DragonBoneAnimationTools{private static _instance : DragonBoneAnimationTools = null;/*** 获取单例(只读......)* @returns {bg2tool.DragonBoneAnimationTools}* @constructor*/public static get Instance() : DragonBoneAnimationTools{if( DragonBoneAnimationTools._instance == null ){DragonBoneAnimationTools._instance = new DragonBoneAnimationTools();}return DragonBoneAnimationTools._instance;}/*** 防止类外实例化*/private constructor(){}/*** 设置骨骼卡槽的皮肤* @param {dragonBones.EgretArmatureDisplay} $animation 骨骼动画* @param {string} $slotName 卡槽名称* @param {string} $textureName 纹理*/public setNewSlot( $animation : dragonBones.EgretArmatureDisplay ,  $slotName:string, $textureName:string ) : void{if( DEBUG ){if( !RES.hasRes($textureName) ){egret.error(`骨骼动画卡槽换装 ${$textureName} 纹理没有配置!!!`);}else{if( RES.getRes( $textureName ) == null ){egret.error(`骨骼动画卡槽换装 ${$textureName} 纹理没有被加载!!!`);}}}let slot:dragonBones.Slot = $animation.armature.getSlot($slotName);let b:egret.Bitmap = new egret.Bitmap();b.texture = RES.getRes( $textureName );b.x = slot.display.x;b.y = slot.display.y;b.anchorOffsetX = b.width>>1;b.anchorOffsetY = b.height>>1;slot.display = b;}}
}

现在准备测试

①: 准备龙骨资源

注意:
球的图片资源绑定的卡槽名称为 slot

看看初始骨骼动画效果:

private $dragonBone : dragonBones.EgretArmatureDisplay = null;
                this.$dragonBone = bg2tool.DragonBonePoolResManager.Instance.getAnimation4DragonBone("GuajiSelfBone_ske_json","GuajiSelfBone_tex_json","GuajiSelfBone_tex_png","guajiAnimation",1,1);this._context.GuajiAnimation.addChild( this.$dragonBone );this.$dragonBone.x = 200;this.$dragonBone.y = 400;this.$dragonBone.animation.play("jumping",0);

结果:

换皮开始:
换成:

代码:

                this.$dragonBone = bg2tool.DragonBonePoolResManager.Instance.getAnimation4DragonBone("GuajiSelfBone_ske_json","GuajiSelfBone_tex_json","GuajiSelfBone_tex_png","guajiAnimation",1,1);this._context.GuajiAnimation.addChild( this.$dragonBone );this.$dragonBone.x = 200;this.$dragonBone.y = 400;this.$dragonBone.animation.play("jumping",0);bg2tool.ResSyncLoadingManager.Instance.startLoading( "1-1_99003_png" , this.changeSkin.bind(this) );private changeSkin( $skin : string ) : void{if( $skin == "1-1_99003_png" ){bg2tool.DragonBoneAnimationTools.Instance.setNewSlot( this.$dragonBone , "slot" , $skin );}}

结果 :

转载于:https://blog.51cto.com/aonaufly/2066919

Egret之龙骨卡槽(slot)换皮相关推荐

  1. slot具名卡槽和props

    App.vue代码 <template><div id="app"><StuPropsVue :name="name" :age= ...

  2. slot卡槽封装公共组件

    简化代码,封装公共组件 前言 项目中不可避免的有很多相同的组件,封装公共组件可以简化代码,提高开发效率,slot可以完美的实现封装 一.slot是什么? slot卡槽可以分为具名卡槽和默认卡槽,默认卡 ...

  3. 友情提醒:新办理的手机号没事千万别换卡槽,否则容易停机!

    有网友私信小编,刚激活的手机卡换卡槽可以吗?对此,小编并不建议立即换. ​ 手机卡虽然是可以换卡槽的,但是那是针对老用户,对于刚激活的手机卡在插卡后7天内是不建议换手机或者卡槽,否则会导致停机,需要二 ...

  4. 移动神卡换设备换卡槽被锁卡怎么办?

    移动神卡换设备换卡槽被锁卡怎么办? 移动无限神卡,自助解锁地址 http://wx.szcoolfish.com/coolfis - 3396#/mUnbind?id=50 如果更换卡槽或手机.自己去 ...

  5. spine 动态换皮功能

    前言: cocos2dx 中spine 的换皮功能是一种静态的方法,也就是在创建 spine 动画的时候就必须将所有的皮肤全部加载,然后在代码中直接换皮,并且这种换皮是整体的切换,对于我们实际开发中这 ...

  6. 华为卡槽打不开怎么办_又牛又贵!华为5G折叠屏手机惊艳全球,售价1.75万!网友却讨论......

    售价1.75万元! 华为发布首款5G折叠屏手机Mate X 北京时间 2月24日晚上 华为在巴塞罗那举行了 MWC2019 新品发布会 在这场发布会上, 华为带来了多款全新产品-- 旗下的首款 5G ...

  7. 华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…

    本文经授权转载自澎湃新闻( ID:thepapernews ) 华为发布首款5G折叠屏手机Mate X,售价1.75万元. 2月24日 西班牙巴塞罗那 华为发布了首款5G折叠屏手机 --  华为Mat ...

  8. 换皮后贴吧玩家反馈整理

    贴吧反馈整理: 1. 缺少燃烧海域,平民每年少4w多钻 2. 缺少五觉大金边,炫耀感没有了 3. 世界频道不能聊天 4. 商城卖的便当盒涨价了!10钻涨到40钻 5. 幻化后其他玩家看不到我人物变化, ...

  9. android sim卡槽,包教包会,十分钟让你搞定与或卡槽

    包教包会,十分钟让你搞定与或卡槽 2016-04-29 11:48:20 27点赞 83收藏 35评论 前言:很多手机厂商为了节省成本都会选择与或卡槽,美其名曰节省内部空间,让你的手机更薄,也有华为m ...

最新文章

  1. 如何做一名专业的软件测试工程师
  2. 《软件设计精要与模式》第二版源代码
  3. 何恺明团队新作:图像分割精细度空前,边缘自带抗锯齿,算力仅需Mask R-CNN的2.6%...
  4. OpenStack Queens版本Barbican项目介绍
  5. 计算机综合布线课程,综合布线工程课程教与学(教学大纲)
  6. 数据分析步骤(思维导图)
  7. 想要成功,你得像剥洋葱一样一层一层地撕开自己
  8. 华为大数据学习笔记——ModelArts
  9. http请求 302解决方法
  10. 一个人的心态好比琴弦
  11. Codeforces Round #739 (Div. 3) ABCDEF1F2 解题思路
  12. 2016年下半年信息安全工程师上午选择题及解析
  13. 面试问烂了的测试用例: 登录界面的测试用例
  14. 算法设计与分析:分治法输出数字旋转方阵
  15. html中a标签的具体使用,什么是a标签 a标签怎么用
  16. Django3创建数据库表模型及 Django 管理页面
  17. 网易考拉规则引擎平台架构
  18. LeetCode每日一题,积少成多,量变到质变(最近比较忙不定期持续更新.........)
  19. iapp php邮箱怎么反馈,iCloud邮箱
  20. 博客园好文,转载作者:欢跳的心写的一篇关于《window 删除文件提示指定的文件名无效或太长 - 欢跳的心 - 博客园》

热门文章

  1. 群雄逐鹿,谁会赢得自动驾驶之战?
  2. 华为自动驾驶实车实路测试视频曝光!
  3. 我们生活在一个虚拟世界的概率有多大?
  4. 中国工程院院士陈左宁详述:人工智能模型和算法的七大发展趋势
  5. 关于征集2020重大科学问题和工程技术难题的通知
  6. 马斯克:“星链”卫星已能提供服务
  7. 产业互联网受瞩目:互联网主战场从To C转向To B | 企鹅经济学
  8. Waymo正式向真正“无人车”迈进,申请DMV远程监控许可证
  9. Nature:寻找记忆的痕迹
  10. 人工智能预测之七宗罪