Skip to main content

Posts

Showing posts from June, 2009

[ AS3] 簡單講客製 Event

很多人從 AS2 轉 AS3 後,還是習慣照用 MovieClip(root) 之類的寫法,但其實 AS3 的 Event 機制提供了一個良好的環境讓你脫離兒子物件直接控制老爸物件 (如同 MovieClip 中寫 _root.去做啥())。這就是工程師最愛講的:loose coupling (鬆耦) 在 AS3 中,所有的 DisplayObject 都繼承自 EventDispatcher,所以它們可以收聽跟發送 Event。 以下是一個簡單的範例講解客製 AS3 Event 應用... 情況解說:主stage a.swf 載入 b.swf ,當點選 b.swf 內的按鈕須要通知 a.swf gotoAndPlay("labelA")。如果你沿用 AS2 寫作邏輯,你一定會在 b.swf 內的按鈕寫上: btn.addEventListener( MouseEvent.CLICK , onClick ); function onClick(e:Event):void{ // 不管怎樣就是只能控制 [MainTimeline] 去 gotoAndStop("labelA") MovieClip( parent.root ).gotoAndStop("labelA"); } 又或者將控制動作寫在 a.swf 內: var ldr:Loader = new Loader; ldr.contentLoaderInfo.addEventListener( Event.COMPLETE , onLoaded ); ldr.load( new URLRequest ( "b.swf" ) ); function onLoaded(e:Event):void{ var mc:MovieClip = ldr.content as MovieClip; addChild(mc); //喔喔將 b.swf 的 btn 一併綁進來了喔!所以按鈕絕對不能亂改名喔,也不能改階層 mc.btn.addEventListener( Event.CLICK , onClick); } function onClick(e:Event):void{ gotoAnd