作者poomsne (喷仔)
看板Flash
标题Re: [问题]AS3写动画的问题
时间Thu Nov 6 14:09:08 2008
※ 引述《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)