认识DragonBones动画
DragonBones动画几乎可以用于几乎目前所有的主流游戏引擎和变成语言,如egret,unity,cocos2d-x等。DragonBones提供的api可以支持在以上游戏开发工具中直接访问骨骼、附件、皮肤、动画,操作骨骼组合动画以及创造淡入淡出的效果。
具体的支持库可以看这里:https://github.com/DragonBones
不过很长时间不再更新了,希望还会继续更新维护下去。
认识DragonBonesPro制作的动画资源
DragonBones资源,主要包括显示数据和各种骨骼动画的控制数据。
egret项目中如何将骨骼动画显示在舞台上
第一步,将骨骼动画的数据上图的3个文件添加到default.res.json资源管理器中;
第二步,将骨骼动画的数据加载到内存中;
var dbData = RES.getRes("theElf_ske_json");
var texData = RES.getRes("theElf_tex_json");
var tex = RES.getRes("theElf_tex_png");
第三步,创建骨骼动画工程,然后加骨骼动画的数据添加到工程中
//方法1
var dbFactory:dragonBones.EgretFactory = dragonBones.EgretFactory.factory;
//方法2
let factory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
factory.parseDragonBonesData(dbData1);
factory.parseTextureAtlasData(texData1,tex1);
第四步,获取骨架显示对象并添加到舞台上
数据准备好了,我们需要从中提取出需要的骨架系统,一种角色对应一套骨架,当我们需要显示某种角色的,首先将其Dragonbones资源解析到工厂中,然后变可以轻易的使用工厂建立一套骨架,用于显示对应的角色了。
工厂是根据骨架名字来建立骨架的,骨架可以理解为是某种角色的控制中心,但是骨架不是直接的显示对象,而是通过骨架显示对象显示在舞台上的
获取骨架显示对象 方法1
let ar1:dragonBones.EgretArmatureDisplay = factory.buildArmatureDisplay("elf");
this.addChild(ar1);
获取骨架显示对象 方法2
this.armature = this.factory.buildArmature("Dragon");
this.armatureClip = this.armature.getDisplay();
this.addChild(this.armatureClip);
第六步,播放一个骨骼动画中的动作
//-1 是按照动画设计中的播放次数 0 是循环播放 >1播放指定的次数
armatureDisplay.animation.play("walk",0)
armature.animation.play("walk",0)
ps:walk是在编辑骨骼动画阶段就定好的。
DragonBones对动作推进使用了一个时钟管理WorldClock,但新的dragonBones.EgretArmatureDisplay对象会自动绑定WroldClock,已经无需手动添加。