egret.MovieClipData 使用範例, 請參考 egret.MovieClip
class Main extends eui.UILayer {
protected createChildren(): void {
super.createChildren();
egret.lifecycle.onPause = () => egret.ticker.pause();
egret.lifecycle.onResume = () => egret.ticker.resume();
egret.registerImplementation('eui.IAssetAdapter', new AssetAdapter());
egret.registerImplementation('eui.IThemeAdapter', new ThemeAdapter());
this.runGame();
}
private async loadResource() {
let loadingView = this.stage.addChild(new LoadingUI()) as LoadingUI;
await RES.loadConfig('resource/default.res.json', 'resource/');
await new Promise(resolve => new eui.Theme('resource/default.thm.json', this.stage).once(eui.UIEvent.COMPLETE, resolve, this));
await RES.loadGroup('preload', 0, loadingView);
this.stage.removeChild(loadingView);
}
private async runGame() {
await this.loadResource();
// --- Edwin 給你最乾淨的程式碼, 從這行以下開始寫喔 ---
// 先建立資料工廠
const playerFactory = new egret.MovieClipDataFactory(RES.getRes('myPlayer_json'), RES.getRes('myPlayer_png'));
// 從資料工廠產生資料
const mc_data: egret.MovieClipData = playerFactory.generateMovieClipData('player'); // player 同檔名
// 建立資料顯示容器
const player = new egret.MovieClip(mc_data);
// 設定每秒播放12格
player.frameRate = 12;
// 0 表示從第 0 格開始播放,播放次數 -1 表示 loop
player.gotoAndPlay(0, -1);
// 顯示於場景
this.addChild(player);
// 影格從 1 開始標, 沒有第 0 格, 取得第一格資料
console.log(mc_data.getKeyFrameData(1)); // {res: "FBE3236C", x: 72, y: 16}
// 取得第一格圖片並顯示於場景
this.addChild(new eui.Image(mc_data.getTextureByFrame(1))).y = 200;
}
}
沒有留言:
張貼留言