作者LCDbest (掉進程式的深崖)
看板Flash
標題[問題] Flex與Flash事件的觀念?
時間Wed May 13 17:05:48 2009
又來提問了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
1F:推 cjcat2266:MXML編譯會生成AS,那個AS有自動幫你補上"e:Event" 05/13 17:06
2F:→ cjcat2266:還有AS3的event listener model就是要傳事件,這是規定 05/13 17:07
3F:→ cjcat2266:要不傳入事件而呼叫函式也可以,請參考 #19v3Imn5 05/13 17:08
4F:→ LCDbest:嗯~先謝謝大大了^^,有猜想到MXML編成AS的時候會自動加 05/13 18:05
5F:→ LCDbest:但比較好奇的是,為何需要傳入"事件物件"進去.. 05/13 18:06
6F:推 cjcat2266:因為有時候關於該特定事件的資訊需要用這個物件來取得 05/13 18:07
7F:→ cjcat2266:如KeyboardEvent.keyCode可以知道是哪個鍵被按下或放開 05/13 18:08
8F:→ cjcat2266:MouseEvent.delta可以知道滑鼠滾輪是往上還往下滾 05/13 18:08
9F:→ cjcat2266:ProgressEvent.bytesLoaded可以知道物件載入的目前進度 05/13 18:08
10F:→ aquarianboy:如果你一直向繼承的祖先挖骨,在IEventDispatcher可以 05/13 18:11
11F:→ aquarianboy:翻到addEventListener的說明,寫著"Registers an 05/13 18:12
12F:推 aquarianboy:event listerer object with an EventDispatcher 05/13 18:12
13F:→ aquarianboy:object so that the listener recevies notification 05/13 18:13
14F:→ aquarianboy:of an event" 05/13 18:13
15F:→ aquarianboy:你的event handler會收到通知,如同cj推文的,透過這 05/13 18:16
16F:→ aquarianboy:個通知,你的handler可以知道是誰發的通知,你可以做 05/13 18:17
17F:→ aquarianboy:更多的控制或調整 (推文好累) 05/13 18:18
18F:→ LCDbest:不好意思喔XD,有勞兩位大大了,晚點如果有整理出來 05/13 18:23
19F:→ LCDbest:在PO一篇到板上,^^,目前大致上了解了,謝謝喔!!感恩 05/13 18:23
20F:→ LCDbest:稍微看完了,就如大大大所說的, 05/14 09:45
21F:→ LCDbest:(好像也沒東西能整理一篇了>"<... )。 05/14 09:46
22F:→ LCDbest:總之,就是為了做更多的控制需要,所以必須一定要傳入, 05/14 09:47
23F:→ LCDbest:再次謝謝兩位大大了>"<...感謝!~ 05/14 09:47
24F:→ aquarianboy:也不太能這樣說,cj推文第二行,"這是規定" 05/14 10:21
25F:→ aquarianboy:因為傳入了事件,如果需要的話,可以做更多的控制 05/14 10:22
26F:→ aquarianboy:但即使不做更多控制,也是必須傳入事件 05/14 10:26
27F:→ darKyle:寫在mxml裡其實會被包上一層function(event:Event){} 05/15 14:27
28F:→ LCDbest:感謝各位大大的解說,小弟受教了^^ 05/15 16:59