2011-04-17 53 views

回答

9

儘管它很瘋狂,但沒有內置的方法來做到這一點(儘管它應該是)。兩個選項都有一個標誌,當您調用播放/停止時您會交換。

var mc_playing:Boolean = false; 

mc_playing = true; 
mc.play(); 



mc_playing = false; 
mc.stop(); 

或者您可以擴展MovieClip類來創建您自己的播放屬性。

class SuperMovieClip extends MovieClip { 
    private var _playing:Boolean = false; 

    public function SuperMovieClip() { 

    } 

    override public function play():void { 
     _playing = true; 
     super.play(); 
    } 

    override public function stop():void { 
     _playing = false; 
     super.stop(); 
    } 

    public get function playing():Boolean { 
     return _playing; 
    } 

} 

接下來,只要你的MC鏈接SuperMovieClip而不是影片剪輯

+0

我已經想到了這一點,但我想使這個在「乾淨」的方式 – takayoshi 2011-04-17 12:18:49

+2

第二種方式是相當「乾淨」。一旦設置完成,你所需要做的就是'if(mc.playing == true)' – Chris 2011-04-17 12:23:26

+1

這是最乾淨的方式:) – RasmusWL 2011-04-17 12:51:50

0

如果你不想將覆蓋您可以創建一個控制器類來處理這些類型的檢查上一次更新的核心類。控制器持有剪輯以檢查和存儲currentFrame的更新。使用這種方法,您可以使用一個控制器來控制許多剪輯,並且只詢問控制器是否正在播放剪輯。稍後可以輕鬆地爲控制器添加功能,而無需更改要檢查的類。

_controller = new TimelineClipController(); 
_controller.add(_animationClip1); 
_controller.add(_animationClip2); 

// on update (ENTER_FRAME, CUSTOM EVENT or TIMER) 
_controller.update(); 

// check if playing 
trace(_controller.isClipPlaying(_animationClip1)); 

做的另一種方法是添加腳本運行。我個人不喜歡這個,但在某些情況下,它可以很好。假設你添加

//add script to star timeline on frame 2 
_animationClip1.addFrameScript(1, frameFunction); // (zero based)