function eventResponse(eventObject:EventType):void{
//事件觸發後所要回應的處理程式(執行的動作)
}
eventTarget.addEventListener(EventType.EVENT_NAME,eventResponse);
function eventResponse()
函式就是「處理事件偵聽程式」,用來回應事件發生所要執行的動作 (程式) 。 eventTarget
是「事件目標」,就是一個指定的物件實體的名稱。 addEventListener()
是將「偵聽程式」註冊給事件目標的方法,當參數 EventType.EVENT_NAME
指定的事件發生,事件目標就會被通知,接著呼叫參數 eventResponse
函式,並將「事件物件」傳遞過去給名為 eventObject
的參數。這可以想成,偵聽程式,是物件專為處理事件的「方法」。
舞台上加入二個按鈕物件分別用來停止 (名為 stopBtn) 和播放 (名為 playBtn) MovieClip 物件,及一個名為 mcA 的 MovieClip 物件。
import flash.display.*;
import flash.events.*;
function playClip(ev:MouseEvent):void{
mcA.play();
}
function stopClip(ev:MouseEvent):void{
mcA.stop();
}
playBtn.addEventListener(MouseEvent.CLICK,playClip);
stopBtn.addEventListener(MouseEvent.CLICK,stopClip);
有時候我們希望以事件目標作為執行動作的對象,例如,有好幾個 MovieClip 物件任一個被按一下就改變 alpha
屬性,那麼就沒辦法在事件處理函式中明確指定物件名稱了,此時可以利用事件物件的 currentTarget
或 target
屬性指向目前處理事件的目標物件或最內層的事件目標物件。
舞台上放入二個 MovieClip 物件分別名為 mcA, mcB 。
import flash.display.*;
import flash.events.*;
function chProp(ev:MouseEvent):void{
ev.currentTarget.alpha-=0.1;
}
mcA.addEventListener(MouseEvent.CLICK,chProp);
mcB.addEventListener(MouseEvent.CLICK,chProp);
ev
是傳遞過來的事件物件, currentTarget
屬性會指出目前處理事件物件的事件目標物件,而 target
則會指向實際發生事件的最內層子物件;如果事件目標沒有子物件, currentTarget
及 target
物件是會一樣的。
舞台上放一個名為 linkBtn 按鈕物件。
import flash.display.*;
import flash.events.*;
import flash.net.*;
function navTo(ev:MouseEvent):void{
var uriAt:URLRequest=new URLRequest(指向位址的字串);
navigateToURL(uriAt);
}
linkBtn.addEventListener(MouseEvent.CLICK, navTo);
ev.currentTarget.x=100
//指定處理 ev 物件的目標物件的 x 座標為 100 px 。ev.target.x=100
//指定 ev 物件的事件目標物件的 x 座標為 100 px 。ENTER_FRAME
public static const ENTER_FRAME:String="enterFrame"
Event.ENTER_FRAME
EXIT_FRAME
public static const EXIT_FRAME:String="exitFrame"
Event.EXIT_FRAME
MOUSE_LEAVE
Stage
物件傳送。public static const MOUSE_LEAVE:String="mouseLeave"
Event.MOUSE_LEAVE
COMPLETE
public static const COMPLETE:String="complete"
Event.COMPLETE
SOUND_COMPLETE
public static const SOUND_COMPLETE:String="soundComplete"
Event.SOUND_COMPLETE
ADDED
DisplayObjectContainer.addChild()
DisplayObjectContainer.addChildAt()
public static const ADDED:String="added"
Event.ADDED
REMOVED
REMOVED_FROM_STAGE 事件
。以下方法會觸發此事件:DisplayObjectContainer.removeChild()
DisplayObjectContainer.removeChildAt()
public static const REMOVED:String="removed"
Event.REMOVED
ADDED_TO_STAGE
DisplayObjectContainer.addChild()
DisplayObjectContainer.addChildAt()
public static const ADDED_TO_STAGE:String="addedToStage"
Event.ADDED_TO_STAGE
REMOVED_FROM_STAGE
DisplayObjectContainer.removeChild()
DisplayObjectContainer.removeChildAt()
public static const REMOVED_FROM_STAGE:String="removedFromStage"
Event.REMOVED_FROM_STAGE
FocusEvent.FOCUS_IN
FocusEvent.FOCUS_OUT
FocusEvent.KEY_FOCUS_CHANGE
FocusEvent.MOUSE_FOCUS_CHANGE
var k:uint=ev.charCode
//將 ev 物件的按鍵字元碼指定給 k 物件。var k:uint=ev.keyCode
//將 ev 物件的按鍵代碼指定給 k 物件。var k:uint=ev.keyLocation
//將 ev 物件的鍵盤位置碼指定給 k 物件。ev.updateAfterEvent()
// ev 物件的事件發生後更新顯示畫面。KeyboardEvent.KEY_DOWN
KeyboardEvent.KEY_UP
localX
x
區域座標,以物件本身為基準座標。localX:Number
lx=ev.localX;
// 將目標物件發生事件的 x
區域座標,指定給 lx
; ev
為事件物件。localY
y
區域座標,以物件本身為基準座標。localY:Number
ly=ev.localY;
// 將目標物件發生事件的 y
區域座標,指定給 ly
; ev
為事件物件。stageX
x
全域座標,以舞台為基準座標。會隨著 localX
改變而自動改變。stageX:Number
[唯讀]sx=ev.stageX;
// 將目標物件發生事件的 x
舞台座標,指定給 sx
; ev
為事件物件。stageY
y
全域座標,以舞台為基準座標。會隨著 localY
改變而自動改變。stageY:Number
[唯讀]sy=ev.stageY;
// 將目標物件發生事件的 y
舞台座標,指定給 sy
; ev
為事件物件。delta
MouseEvent.MOUSE_WHEEL
事件。delta:int
[讀寫]if(ev.delta>0){ev.target.scaleX+=0.02;ev.target.scaleY=ev.target.scaleX;}
// 在目標物件上滾動滾輪,放大物件; ev
為事件物件。updateAfterEvent()
ev.updateAfterEvent()
// ev 物件的事件發生後更新顯示畫面。MouseEvent.CLICK
MouseEvent.MOUSE_DOWN
MouseEvent.MOUSE_UP
MouseEvent.MOUSE_OVER
MouseEvent.MOUSE_OUT
MouseEvent.MOUSE_MOVE
MouseEvent.MOUSE_WHEEL
MouseEvent.DOUBLE_CLICK
var l:Number=ev.bytesLoaded
//將 ev 物件作業中已載入的位元組數指定給 l 物件。var l:Number=ev.bytesTotal
//將 ev 物件作業中載入檔的總位元組數指定給 l 物件。ProgressEvent.PROGRESS
ScrollEvent.SCROLL
var a:Number=ev.value
//將 ev 物件的對應值指定給 a 物件。SliderEvent.CHANGE
TextEvent
的屬性與方法TextEvent
繼承 Event
text
TextEvent.TEXT_INPUT
事件時,取得使用者輸入的字元組;在 TextEvent.LINK
事件時,取得 a
連結屬性值 (如 href='event:case'
) 其中 event
協定值的字串 (此例會取得 "case"
)。text:String
[讀寫]var te:String=ev.text
//將 ev 物件的輸入字元組內容指定給 te 物件。TEXT_INPUT
public static const TEXT_INPUT:String = "textInput"
TextEvent.TEXT_INPUT
LINK
public static const LINK:String = "link"
TextEvent.LINK