一、使用白鹭官方工具TextureMerger制作帧动画文件:
选择MovieClip进行制作完成后导出得到一个.png和一个.json文件。
二、导入使用:
白鹭帧动画控制无法是那几个API,不懂得童鞋请看API和代码注释;以下是使用demo:
/**
* @copyright www.egret.com
* @author yjtx
* @desc 帧动画示例。
* 触摸舞台会重新播放。
* 播放过程中如果有帧事件,会触发egret.MovieClipEvent
* .FRAME_LABEL事件。
* 在播放结束一次后会触发egret.Event.LOOP_COMPLETE
* 事件。全部播放完全后,会触发egret.Event.COMPLETE事件
* 。
*/
class Main extends egret.DisplayObjectContainer {
constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
}
private onAddToStage(event: egret.Event) {
this.loadAnimation("resource/assets/mc/plain1.png","resource/assets/mc/plain1.json",function(mcData,mcTexture) {
/*** 本示例关键代码段开始 ***/
var mcDataFactory = new egret.MovieClipDataFactory(mcData, mcTexture);
var role: egret.MovieClip = new egret.MovieClip(mcDataFactory.generateMovieClipData("palin1"));
this.addChild(role);
role.gotoAndPlay(1, 1);
role.x = 100;
role.y = 100;
role.addEventListener(egret.Event.COMPLETE, function (e: egret.Event): void {
egret.log("play over!")
}, this);
role.addEventListener(egret.Event.LOOP_COMPLETE, function (e: egret.Event): void {
egret.log("play times:");
}, this);
role.addEventListener(egret.MovieClipEvent.FRAME_LABEL, function (e: egret.MovieClipEvent): void {
egret.log("frameLabel:" + e.frameLabel);
}, this);
/*** 本示例关键代码段结束 ***/
});
}
protected loadAnimation(pngUrl:string,jsonUrl:string,callback: Function): void {
//3.两个文件都加载完才能播放动画
var self = this;
var count: number = 0;
var check = function () {
count++;
if (count == 2) {
//callback.call(self);
callback.call(self,_mcData,_mcTexture);
}
}
//2.加载png文件
let _mcTexture: egret.Texture;
var loader = new egret.URLLoader();
loader.addEventListener(egret.Event.COMPLETE, function loadOver(e) {
_mcTexture = e.currentTarget.data;
check();
}, this);
loader.dataFormat = egret.URLLoaderDataFormat.TEXTURE;
loader.load(new egret.URLRequest(pngUrl));
//1.加载json文件
let _mcData: any;
var loader = new egret.URLLoader();
loader.addEventListener(egret.Event.COMPLETE, function loadOver(e) {
_mcData = JSON.parse(e.currentTarget.data);
check();
}, this);
loader.dataFormat = egret.URLLoaderDataFormat.TEXT;
loader.load(new egret.URLRequest(jsonUrl));
}
}