[問題] Flex與Flash事件的觀念?

看板Flash作者 (掉進程式的深崖)時間16年前 (2009/05/13 17:05), 編輯推噓3(3025)
留言28則, 4人參與, 最新討論串1/1
又來提問了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

05/13 17:06, , 1F
MXML編譯會生成AS,那個AS有自動幫你補上"e:Event"
05/13 17:06, 1F

05/13 17:07, , 2F
還有AS3的event listener model就是要傳事件,這是規定
05/13 17:07, 2F

05/13 17:08, , 3F
要不傳入事件而呼叫函式也可以,請參考 #19v3Imn5
05/13 17:08, 3F

05/13 18:05, , 4F
嗯~先謝謝大大了^^,有猜想到MXML編成AS的時候會自動加
05/13 18:05, 4F

05/13 18:06, , 5F
但比較好奇的是,為何需要傳入"事件物件"進去..
05/13 18:06, 5F

05/13 18:07, , 6F
因為有時候關於該特定事件的資訊需要用這個物件來取得
05/13 18:07, 6F

05/13 18:08, , 7F
如KeyboardEvent.keyCode可以知道是哪個鍵被按下或放開
05/13 18:08, 7F

05/13 18:08, , 8F
MouseEvent.delta可以知道滑鼠滾輪是往上還往下滾
05/13 18:08, 8F

05/13 18:08, , 9F
ProgressEvent.bytesLoaded可以知道物件載入的目前進度
05/13 18:08, 9F

05/13 18:11, , 10F
如果你一直向繼承的祖先挖骨,在IEventDispatcher可以
05/13 18:11, 10F

05/13 18:12, , 11F
翻到addEventListener的說明,寫著"Registers an
05/13 18:12, 11F

05/13 18:12, , 12F
event listerer object with an EventDispatcher
05/13 18:12, 12F

05/13 18:13, , 13F
object so that the listener recevies notification
05/13 18:13, 13F

05/13 18:13, , 14F
of an event"
05/13 18:13, 14F

05/13 18:16, , 15F
你的event handler會收到通知,如同cj推文的,透過這
05/13 18:16, 15F

05/13 18:17, , 16F
個通知,你的handler可以知道是誰發的通知,你可以做
05/13 18:17, 16F

05/13 18:18, , 17F
更多的控制或調整 (推文好累)
05/13 18:18, 17F

05/13 18:23, , 18F
不好意思喔XD,有勞兩位大大了,晚點如果有整理出來
05/13 18:23, 18F

05/13 18:23, , 19F
在PO一篇到板上,^^,目前大致上了解了,謝謝喔!!感恩
05/13 18:23, 19F

05/14 09:45, , 20F
稍微看完了,就如大大大所說的,
05/14 09:45, 20F

05/14 09:46, , 21F
(好像也沒東西能整理一篇了>"<... )。
05/14 09:46, 21F

05/14 09:47, , 22F
總之,就是為了做更多的控制需要,所以必須一定要傳入,
05/14 09:47, 22F

05/14 09:47, , 23F
再次謝謝兩位大大了>"<...感謝!~
05/14 09:47, 23F

05/14 10:21, , 24F
也不太能這樣說,cj推文第二行,"這是規定"
05/14 10:21, 24F

05/14 10:22, , 25F
因為傳入了事件,如果需要的話,可以做更多的控制
05/14 10:22, 25F

05/14 10:26, , 26F
但即使不做更多控制,也是必須傳入事件
05/14 10:26, 26F

05/15 14:27, , 27F
寫在mxml裡其實會被包上一層function(event:Event){}
05/15 14:27, 27F

05/15 16:59, , 28F
感謝各位大大的解說,小弟受教了^^
05/15 16:59, 28F
文章代碼(AID): #1A2erlkk (Flash)