2009-12-03 72 views
0

我有舞臺上的按鈕(run1_btn - run5-btn),點擊後將影片剪輯添加到舞臺上(手動)影片剪輯包含幾幀動畫。當點擊一個按鈕時,動畫片段會被添加,但動畫已經完成。 我以爲,當MC加入舞臺後,動畫就會開始,但似乎並非如此。 有誰知道解決這個問題的方法。動態添加動畫片段到舞臺as3

這裏是我的代碼:

var handSlap:hand; 
handSlap = new hand(); 

//event listeners 
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea); 




//functions 
function clickArea(evtObj:MouseEvent):void 
{ 
    trace(evtObj.target.name); 
    addChild(handSlap); 
    handSlap.x =200; 
    handSlap.y=200; 

} 

回答

1

可能更優雅(取決於你的觀點),它可以確保在任何情況下,當它添加到舞臺的手將重新啓動其時間軸動畫:

hand.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true); 
function onHandAddedToStage(event:Event):void 
{ 
    var mc:Movieclip = MovieClip(event.currentTarget); 
    mc.gotoAndPlay(1); 
} 

如果您對事件模型不熟悉,那麼「false,0,true」位可以確保如果您需要卸載手,它將不會被事件監聽器阻塞並留在內存中,可能你不需要它,但它沒有任何傷害。

+0

謝謝,這工作,但我不得不添加事件監聽器handSlap而不是手。接下來的問題是,它只能使用一次。第二次和後續按鈕被點擊時沒有任何反應。 在添加另一個影片剪輯之前,是否需要刪除添加的影片剪輯? – 2009-12-09 18:42:00

+0

是的,對不起 - 手不拉手! 你是否喜歡漫遊事件監聽器,或者代碼看起來像上面的代碼? 動畫完成後,你會做什麼?可見=假?如果是這樣,請執行parent.removeChild(this),而不是從舞臺上移除handSlap。 – alecmce 2009-12-10 09:34:47

+0

roving =正在移除,抱歉在手機atm – alecmce 2009-12-10 09:35:39

0
var newPig:pig; 
newPig = new pig(); 
addChild(newPig); 
newPig.y=360; 
newPig.x=350; 

var handSlap:hand; 
handSlap = new hand(); 

//event listeners 
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea); 
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea); 

handSlap.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true); 


//functions 
function clickArea(evtObj:MouseEvent):void 
{ 
    trace(evtObj.target.name); 

    addChild(handSlap); 
    handSlap.x =200; 
    handSlap.y=200; 


} 

function onHandAddedToStage(event:Event):void 
{ 
    var mc:MovieClip = MovieClip(event.currentTarget); 
    mc.gotoAndPlay(1); 
} 
相關問題