EgretMVC龙骨动画插入及播放

本文详细介绍了如何在EgretMVC框架下实现龙骨动画的集成。首先,我们需要准备并初始化龙骨动画的资源文件。接着,创建一个专门的动画类来处理动画逻辑。最后,在战斗场景类中,我们将动画组件绑定到场景中,实现动画的播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、先初始化龙骨动画所需的文件资源
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();
		//音乐音效处理
		// App.SoundManager.setBgOn(true);
		// App.SoundManager.setEffectOn(!App.DeviceUtils.IsHtml5 || !App.DeviceUtils.IsMobile);
         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"/*,
                                "pao025","pao050","pao075","pao100",
                                "shouji025","shouji050","shouji075","shouji",
                                "siwang1","siwang2","siwang3"*/];
        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";
		//动画缩放为0.5倍大小
		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);
        //将动画类绑定到界面的group中
        this.group01.addChild(this.spearMan);
        //面板事件监听
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值