Re: [問題]AS3寫動畫的問題
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章