笔者使用CocosCreator版本为v2.0.9,导出的龙骨资源使用的是5.0选项。
1,获得当前armatureDisplay,和当前amature
this.armatureDisplay = this.testWarlock.getComponent(dragonBones.ArmatureDisplay);
this.armature = this.armatureDisplay.armature();
2,播放动画
- 使用armatureDisplay来播放
this.armatureDisplay.playAnimation("move", 0);
缺点:不支持fade - 使用armature来播放
this.armature.animation.fadeIn("move", 0.2, 0);
this.armature.animation.play("move",0);
支持fade
3,动画事件监听
//添加动画事件监听
this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, this.animationEventHandler, this);
private animationEventHandler(event) {
if (event.type === dragonBones.EventObject.COMPLETE) {
if (event.animationState.name === "attack") {
Debug.Log("attack 动作播放完毕!!!");
//TODO:
}
}
}
还有诸如以下(更多参见官方文档)的动画事件监听:
COMPLETE 对应动画播放完成。比如我若设置动画播放次数为5,那么5次播放完毕后才会触发该事件。
若我设置动画无限循环播放,那么将不会触发该事件。所以需要根据情况看是否要使用LOOP_COMPLETE事件。
LOOP_COMPLETE 动画循环播放完成一次。
FADE_IN 动画淡入开始。
FADE_IN_COMPLETE 动画淡入完成。
FRAME_EVENT 动画帧事件。
SOUND_EVENT 动画帧声音事件。
操作具体骨骼
获得骨骼:let lh:dragonBones.Bone=this.armature.getBone("leftHand");
需要注意的是,这里不能传骨骼的节点路径,否则返回的为null,直接传骨骼的名称即可,在DrgonBone中已经限定了骨骼名不可重复。且支持中文骨骼节点。
操作:
lh.offset//这个是骨头相对于骨架的transform变量含有x,y,rotation,scale等值
lh.global//这个相对于骨架的值含有(x,y,rotation,scale等值)
lh.offset.rotation=//对骨头旋转