Re: [問題]AS3寫動畫的問題

看板Flash作者 (噴仔)時間17年前 (2008/11/06 14:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《CrystalCrown ()》之銘言: : 想請問一下 : 要如何利用AS3將外部許多動畫的片段連結在一起? : 譬如: : 假設有一陣列Anime:Array=[A,B,C]; : 用if判斷是判斷Array[]是多少 : if Anime[0] = A; 就呼叫A動畫的function : 當A動畫跑完後繼續這個迴圈往下跑 : if Anime[1] = B; 就呼叫B動畫的function... : 直到跑完整個陣列結束為止才跳出 : 效果大致如下 : http://0rz.tw/fd4Xq : 請問如何知道每個分散的動畫已經結束 : 並將這些分散的動畫組成一個連續的動畫呢? : PS.外部的動畫是利用Tween或enterFrame組成 感覺你好像是要做animation player 我手邊只有flash8只支援as2.0,我可以跟你說一下大概的做法 簡單的做法 var order:Array = ["a", "b" ,"c"]; var target=order.shift(); this.onEnterFrame=function(){ if(this[target]._currentframe < this[target]._totalframes){ this[target].gotoAndStop(this[target]._currentframe+1); }else{ if(order.length <= 0){ trace("do something"); delete this.onEnterFrame; reutrn; }else{ target=order.shift(); } } } 進階一點你可以寫個簡單類別去控制動畫撥放的順序 class AniPlayer extends MovieClip{ private var aniList:Array; private var target:MovieClip; private act:Boolean; function AniPlayer(){ init(); } private function init():Void{ aniList = new Array(); act = false; target = undefined; } public function setData(ary:Array, flag:Boolean):Void{ aniList = ary; act = flag; getNext(); } public function onEnterFrame():Void{ if(act == false) if(aniList.length<=0){ return; } if(target._currentframe < target._totalframes){ target.gotoAndStop(target._currentframe+1); }else{ if(aniList.length<=0){ init(); trace("do something"); return; }else{ getNext(); } } } private function getNext():Void{ target = MovieClip(aniList.shift()); } public function playMe():Void{ act = true; } public function stopMe():Void{ act = false; } } 接下來只要在你的程式中attach進你要的物件就好 var ani:MovieClip = this.attachMovie("hi", "hi" this.getNextHightestDepth()); ani.setData([this["a"], this["b"], this["c"], false); ani.playMe(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.80.145 ※ 編輯: poomsne 來自: 211.72.80.145 (11/06 14:11)
文章代碼(AID): #194ee5IF (Flash)
討論串 (同標題文章)
文章代碼(AID): #194ee5IF (Flash)