看板 Flash 關於我們 聯絡資訊
又來提問了XD,最近深入研究事件,也搞的一個頭兩個大, 所以想詢問看看各位大大一些觀念>"<... 以下是Flash裡註冊監聽事件。 function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse); 以監聽器來說, 必須知道三個 1."eventTarget"(事件目標,也就是按下的button之類的) 2.EventType的種類(例如按下,滑入,), 3.發生事件後要執行的function(這裡是eventResponse) 這樣當事件發生,監聽器才會知道,這點沒啥問題@@.. 但問題來了,..... 1.為什麼function eventResponse(eventObject:EventType):void 要傳入事件物件(這裡是eventObject)呢??... 當然,傳進去,可以利用事件物件做一些事,當然是很好, 但原則上,就算沒傳入事件物件,function還是可以執行不是嗎@@? 2.在flex裡面,一個元件(mxml下)註冊事件的方法如下。 <mx:button id="btn" click="eventResponse()"/> function eventResponse():void{} 好像Flex裡,可以不用傳一個事件進去!?,那為何Flex就可以不用傳呢?? ( 還是我記錯了- -?,如果記錯了我先道歉 >.< ) 感謝各位看完這亂亂的文章,...... 還請大大指教^^謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.3.123
cjcat2266:MXML編譯會生成AS,那個AS有自動幫你補上"e:Event" 05/13 17:06
cjcat2266:還有AS3的event listener model就是要傳事件,這是規定 05/13 17:07
cjcat2266:要不傳入事件而呼叫函式也可以,請參考 #19v3Imn5 05/13 17:08
LCDbest:嗯~先謝謝大大了^^,有猜想到MXML編成AS的時候會自動加 05/13 18:05
LCDbest:但比較好奇的是,為何需要傳入"事件物件"進去.. 05/13 18:06
cjcat2266:因為有時候關於該特定事件的資訊需要用這個物件來取得 05/13 18:07
cjcat2266:如KeyboardEvent.keyCode可以知道是哪個鍵被按下或放開 05/13 18:08
cjcat2266:MouseEvent.delta可以知道滑鼠滾輪是往上還往下滾 05/13 18:08
cjcat2266:ProgressEvent.bytesLoaded可以知道物件載入的目前進度 05/13 18:08
aquarianboy:如果你一直向繼承的祖先挖骨,在IEventDispatcher可以 05/13 18:11
aquarianboy:翻到addEventListener的說明,寫著"Registers an 05/13 18:12
aquarianboy:event listerer object with an EventDispatcher 05/13 18:12
aquarianboy:object so that the listener recevies notification 05/13 18:13
aquarianboy:of an event" 05/13 18:13
aquarianboy:你的event handler會收到通知,如同cj推文的,透過這 05/13 18:16
aquarianboy:個通知,你的handler可以知道是誰發的通知,你可以做 05/13 18:17
aquarianboy:更多的控制或調整 (推文好累) 05/13 18:18
LCDbest:不好意思喔XD,有勞兩位大大了,晚點如果有整理出來 05/13 18:23
LCDbest:在PO一篇到板上,^^,目前大致上了解了,謝謝喔!!感恩 05/13 18:23
LCDbest:稍微看完了,就如大大大所說的, 05/14 09:45
LCDbest:(好像也沒東西能整理一篇了>"<... )。 05/14 09:46
LCDbest:總之,就是為了做更多的控制需要,所以必須一定要傳入, 05/14 09:47
LCDbest:再次謝謝兩位大大了>"<...感謝!~ 05/14 09:47
aquarianboy:也不太能這樣說,cj推文第二行,"這是規定" 05/14 10:21
aquarianboy:因為傳入了事件,如果需要的話,可以做更多的控制 05/14 10:22
aquarianboy:但即使不做更多控制,也是必須傳入事件 05/14 10:26
darKyle:寫在mxml裡其實會被包上一層function(event:Event){} 05/15 14:27
LCDbest:感謝各位大大的解說,小弟受教了^^ 05/15 16:59