一、先初始化龙骨动画所需的文件资源
class FightLevelMain{
public constructor() {
var groupName: string = "preload";
var subGroups: Array<string> = ["preload"];
App.ResourceUtils.loadGroups(groupName, subGroups, this.onResourceLoadComplete, this.onResourceLoadProgress, this);
}
private onResourceLoadComplete(): void {
this.initModule();
App.Init();
this.initBattleDragonBones();
App.SceneManager.runScene(SceneConsts.FIGHTLEVEL);
}
private onResourceLoadProgress(itemsLoaded: number, itemsTotal: number): void {
App.ControllerManager.applyFunc(ControllerConst.Loading, LoadingConst.SetProgress, itemsLoaded, itemsTotal);
}
private initBattleDragonBones():void{
var arr:Array<string> = ["daiji025","daiji050","daiji075","daiji",
"gongji025","gongji050","gongji075","gongji100"];
for(var i:number=0, len:number=arr.length; i<len; i++){
var dbName:string = arr[i];
var skeletonData:any = RES.getRes(dbName+"_ske_json");
var texturePng:egret.Texture = RES.getRes(dbName+"_tex_png");
var textureData:any = RES.getRes(dbName+"_tex_json");
App.DragonBonesFactory.initArmatureFile(skeletonData, texturePng, textureData);
}
}
public initModule() {
App.ControllerManager.register(ControllerConst.FightLevel, new FightLevelController());
}
}
二、创建动画类
class SpearMan extends egret.DisplayObjectContainer{
private armature:DragonBonesArmatureContainer;
public controller:BaseController;
public ACTION_Daiji0:string = "daiji";
public ACTION_Daiji1:string = "daiji025";
public ACTION_Daiji2:string = "daiji050";
public ACTION_Daiji3:string = "daiji075";
public constructor($controller:BaseController){
super($controller);
this.armature = new DragonBonesArmatureContainer();
this.armature.register(App.DragonBonesFactory.makeArmature(this.ACTION_DONGZUO,this.ACTION_Daiji0), [this.ACTION_DONGZUO]);
public ACTION_DONGZUO:string = "Sprite";
this.armature.scaleX=0.5;
this.armature.scaleY=0.5;
this.armature.play(this.ACTION_DONGZUO, 0);
this.addChild(this.armature);
}
}
三、创建战斗场景类,将动画绑定到战斗场景的组件中
class FightLevelView extends BaseEuiView {
public spearMan:SpearMan;
private controller:BaseController;
private group01:eui.Group;
public constructor($controller:BaseController, $parent:eui.Group){
super($controller, $parent);
this.skinName = "resource/skins/FightLevelSkin.exml"
}
private dispContainer:egret.Sprite = new egret.Sprite();
public initUI():void{
super.initUI();
this.spearMan = new SpearMan(this.controller);
this.group01.addChild(this.spearMan);
}
}