2015-07-19 96 views
0

我一直在研究一個應用程序,在主屏幕上有一個電影剪輯ball_1重複自己,只要按下任何按鈕,另一個電影剪輯ball_2開始,前一個電影剪輯ball_1消失。我想讓ball_2只播放一次,消失並且影片剪輯ball_1返回到主屏幕。我正在使用基於類的腳本。如何使影片剪輯僅播放一次並使用類移動到另一個影片剪輯?

目前代碼:

BTN_1.addEventListener(MouseEvent.CLICK,playClip_1); 

function playClip_1(e:MouseEvent):void { 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 
} 
+0

請顯示您當前的相關代碼 – BadFeelingAboutThis

+0

BTN_1.addEventListener(MouseEvent.CLICK,playClip_1);函數playClip_1(e:MouseEvent):void {ball_2.visible = true; ball_2.gotoAndPlay(2); ball_1.visible = false; \t \t \t \t}} –

+0

很好,現在,目前的結果是什麼?例如。你目前的代碼做或不做的事情與你期望的不同?你是否在'ball_2'的時間軸末尾有任何代碼向發佈的代碼表明它已完成播放? – BadFeelingAboutThis

回答

1

好吧,我覺得這是剛好足夠的信息,現在回答這個問題。

首先,你會想要兩個功能,一個顯示ball_1,一個顯示ball_2

function playClip_1(e:MouseEvent = null):void { 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 
    ball_1.stop(); //no sense having it keep playing when not visible 
} 

//function to call when ball_2 finishes it's timeline 
function clip1Complete(e:Event = null):void { 
    ball_2.visible = false; 
    ball_1.visible = true; 
    ball_1.play(); 
} 

現在,您需要一種方法爲ball_2調用clip1Complete功能,當它到達結束的這時間線。

最好的方法,將如上使用事件,在相同的代碼情況下,把這個:

ball_2.addEventListener(Event.COMPLETE, clip1Complete); 

然後,ball_2時間表的最後框架上,把這個:

stop; 
dispatchEvent(new Event(Event.COMPLETE)); 

或者,你可以放棄事件監聽器,並直接調用該函數的ball_2像這樣在最後一幀:

stop(); 
MovieClip(parent).clip1Complete(); 
+0

太棒了!它的作品...非常感謝! –