zoukankan      html  css  js  c++  java
  • DragonBones龙骨换装(局部换装+全局换装)

    参考:

    Egret官方换装动画

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

    egret使用DragonBones实现简单的换装

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

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

    下图替换了衣服。

         

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

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

      

    二、封装的换装类

        /**
         * 替换插槽
         * @param slotName 插槽名称 原材料
         * @param textureName 图片名  xxx_png
         * @param 偏移量
         */
        public setNewSlot( slotName:string, textureName:string ,offsetX:number=0, offsetY:number=0){
            var slot:dragonBones.Slot = this.armatureDisplay.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 + offsetX;
            b.anchorOffsetY = b.height/2 + offsetY;
            slot.setDisplay( b );
        }
    

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

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

     四、全局换装

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

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

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

      

      

     

  • 相关阅读:
    linux下wc命令详解
    用shell脚本监控进程是否存在 不存在则启动的实例附带if判断详细条件
    shell脚本输出给字体带颜色
    在centos6.5下安装配置docker
    php lock_sh共享锁 与 lock_ex排他锁
    hadoop streaming 多路输出 [转载]
    gzip压缩及测试方法【转载】
    天空没有翅膀的痕迹,而我已飞过
    logrotate机制与原理[转载]
    服务器 数据库 问题定位的几个工具
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/9544026.html
Copyright © 2011-2022 走看看