Egret动画管理类

利用TextureMerger制作帧动画Egret动画管理类_第1张图片
导出得到两个文件,如下:(具体操作看文档 官方文档)
如果觉得资源文件过大,可以选择无损压缩:png脚本无损压缩
在这里插入图片描述
把两个文件放到项目资源中在这里插入图片描述
编写动画管理类
在这里插入图片描述

class animationManager {
    private static instance: animationManager;
    public static get Instance() {
        if (this.instance == null) {
            this.instance = new animationManager();
        }
        return this.instance;
    }
    //设置起始场景 重要点:在需要设置的动画页面在加载时设置如后面一个代码片段所示
    //如果页面切换,则需要重新设置
    public rootLayer: Scene;

    //设置动画
    public set(text, x, y) {
    	//json_text和img_text 就是default.res.json对应的资源名称,我在这里做了拼接 自己可以做修改
        var json_text = text + "_json"
        var img_text = text + "_png"
        let data = RES.getRes(json_text);
        let txtr = RES.getRes(img_text);
        let mcFactory: egret.MovieClipDataFactory = new egret.MovieClipDataFactory(data, txtr);
        //设置动画名称,json文件的动画名称,我这里动画名称都是写死了为run,如果不一样自行修改
        let mc1: egret.MovieClip = new egret.MovieClip(mcFactory.generateMovieClipData("run"));
        mc1.name = text
        mc1.x = x
        mc1.y = y
        this.rootLayer.addChildAt(mc1, 1);
        mc1.gotoAndPlay(0, -1);
    }
    //关闭动画
    public close(text) {
        if (this.rootLayer.getChildByName(text) && this.rootLayer.getChildByName(text).parent) {
            this.rootLayer.removeChild(this.rootLayer.getChildByName(text))
        }
    }
}

具体页面使用

在页面加载的时候执行这个:

animationManager.Instance.rootLayer = this

具体设置动画:

animationManager.Instance.set("bucket", 100, 1035)

需要清除动画时:

animationManager.Instance.close("fire")

你可能感兴趣的:(Egret动画管理类)