溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Egret之MC逐幀動(dòng)畫(huà)

發(fā)布時(shí)間:2020-07-17 10:16:52 來(lái)源:網(wǎng)絡(luò) 閱讀:4146 作者:Aonaufly 欄目:開(kāi)發(fā)技術(shù)

此處Egret逐幀動(dòng)畫(huà)借助Flash以及Texture Merger工具來(lái)生成文件( 1:動(dòng)畫(huà)描述文件Json , 動(dòng)畫(huà)圖集文件 )

本人以一只飛行的鳥(niǎo)為例

先看Flash , 如下

flash的項(xiàng)目名稱為 fly.fla

Egret之MC逐幀動(dòng)畫(huà)

舞臺(tái)幀信息 , A 和 B為幀標(biāo)簽

Egret之MC逐幀動(dòng)畫(huà)


打開(kāi)texture merger , 選擇egret movieclip 。將fly.swf拖入到編輯區(qū) , 取名Bird , 如下:

Egret之MC逐幀動(dòng)畫(huà)

導(dǎo)出動(dòng)畫(huà)文件 , json 和 png圖集

Egret之MC逐幀動(dòng)畫(huà)

為導(dǎo)出文件取名:

Egret之MC逐幀動(dòng)畫(huà)

我們看看mc_test.json文件如下:

{"mc":{
 "fly":{
  "frameRate":24,
  "labels":[
   {"name":"A","frame":1,"end":3}
   ,{"name":"B","frame":4,"end":8}
   
   ],
  "events":[
   
   ],
  "frames":[
   
   {
   "res":"3E7A5975",
   "x":-67,
   "y":-24
   },
   {
   "res":"521E77D1",
   "x":-67,
   "y":-21
   },
   {
   "res":"4A0EE357",
   "x":-73,
   "y":-24
   },
   {
   "res":"34630D9E",
   "x":-71,
   "y":-36
   },
   {
   "res":"175B90A8",
   "x":-74,
   "y":-29
   },
   {
   "res":"4BC2B418",
   "x":-74,
   "y":-44
   },
   {
   "res":"A49D29C2",
   "x":-76,
   "y":-40
   },
   {
   "res":"B1A21F34",
   "x":-73,
   "y":-19
   }
   ]
}},
 "res":{
  "34630D9E":{"x":1,"y":1,"w":136,"h":77},
  "521E77D1":{"x":280,"y":62,"w":122,"h":61},
  "3E7A5975":{"x":142,"y":121,"w":123,"h":56},
  "4A0EE357":{"x":139,"y":1,"w":136,"h":59},
  "175B90A8":{"x":139,"y":62,"w":139,"h":57},
  "B1A21F34":{"x":267,"y":125,"w":139,"h":41},
  "A49D29C2":{"x":1,"y":121,"w":139,"h":53},
  "4BC2B418":{"x":277,"y":1,"w":136,"h":59}
 }}

解釋如下:

Egret之MC逐幀動(dòng)畫(huà)


在項(xiàng)目中實(shí)現(xiàn)此MC的播放

核心代碼:

  protected childrenCreated():void{
   super.childrenCreated();
   this.txt_name.text = "Snow";
   this.img_dragon.source = RES.getRes("egret_icon_png");
   //this.playDragonEff();
            this.ayncLoad2Mc("mc_test_json");
  }
        private ayncLoad2Mc( resname : string) : void{
            var self = this;
            RES.getResAsync(resname,
                function(data: any,key: string): void {
                    if(key == "mc_test_json") {
                        self.ayncLoad2Mc("mc_test_png");
                    }
                    else if(key == "mc_test_png") {
                        this.playMC();
                    }
                },
                this);
        }
        private playMC() : void{
            var data2mc = RES.getRes("mc_test_json");
            var texture2mc = RES.getRes("mc_test_png");
            let mcFactory : egret.MovieClipDataFactory = new egret.MovieClipDataFactory(data2mc,texture2mc);
            let mc:egret.MovieClip = new egret.MovieClip(mcFactory.generateMovieClipData("fly"));
            mc.gotoAndPlay("A",-1);//"A" : 標(biāo)簽 -1 : 循環(huán)播放
            this.addChild(mc);
            mc.x = 200;
            mc.y = 400;
        }

結(jié)果:

Egret之MC逐幀動(dòng)畫(huà)

解釋:

Egret之MC逐幀動(dòng)畫(huà)


幀事件標(biāo)簽

mc.addEventListener(egret.MovieClipEvent.FRAME_LABEL,(e:egret.MovieClipEvent)=>{    console.log(e.type,e.frameLabel,mc.currentFrame);},this);


如 : 

{"mc":{
	"Battle_start":{
		"frameRate":12,
		"labels":[
			
			],
		"events":[
			 {"name":"@enemy","frame":8}
			],
		"frames":[

那么 : e.frameLabel == "@enemy"


注意 : {"name":"@enemy","frame":8}可以手寫(xiě)加上



每一輪循環(huán)播放完畢觸發(fā)

mc.addEventListener(egret.Event.LOOP_COMPLETE, (e:egret.Event)=>{    console.log(e.type);}, this);

完全播放完畢觸發(fā)

mc.addEventListener(egret.Event.COMPLETE, (e:egret.Event)=>{    console.log(e.type);}, this);

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI