Flash ActionScript3 滑鼠移入移出與點擊,應用移除監聽

這個範例用到監聽移入、移出、點擊的事件監聽,並在點擊事件一開始移除移出的監聽,以免點擊事件讓監聽的物件消失,而又監聽到移出事件。
先來看會有問題的範例檔案。



範例fla檔案_錯誤


會發現這個錯誤範本有移入移出與點擊的監聽,但還是會出現奇怪的結果,就是因為沒有移除監聽。






// 監聽 small1_btn , small2_btn 滑鼠移出事件
small1_btn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);small2_btn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);



解決方式是將上面這個監聽程式碼複製到點擊事件的Function內並將add改為remove
如下




// 監聽 small1_btn , small2_btn 滑鼠點擊事件
small1_btn.addEventListener(MouseEvent.CLICK, onClickToGoToAndStop1);
small2_btn.addEventListener(MouseEvent.CLICK, onClickToGoToAndStop2);


function onClickToGoToAndStop1(event:MouseEvent):void
{
trace("滑鼠點擊small1_btn");
small1_btn.removeEventListener(MouseEvent.MOUSE_OUT,  onMouseOutHandler); trace("移除small1_btn滑鼠移出監聽");
gotoAndStop("mc_1");
}


function onClickToGoToAndStop2(event:MouseEvent):void
{
trace("滑鼠點擊small2_btn");
small2_btn.removeEventListener(MouseEvent.MOUSE_OUT,  onMouseOutHandler); trace("移除small2_btn滑鼠移出監聽");
gotoAndStop("mc_2");
}


就可以正常執行了。


範例fla檔_正確


留言

這個網誌中的熱門文章

參加畢業展之設計類展場小心得

Unity 判斷兩物之間距離、角度,並注視目標

Action Game Maker 1.03 正體中文漢化版