套件 | flash.events |
類別 | public class FocusEvent |
繼承 | FocusEvent Event Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
-
FocusEvent.FOCUS_IN
-
FocusEvent.FOCUS_OUT
-
FocusEvent.KEY_FOCUS_CHANGE
-
FocusEvent.MOUSE_FOCUS_CHANGE
屬性 | 定義自 | ||
---|---|---|---|
bubbles : Boolean [唯讀]
指出事件是否為反昇事件。 | Event | ||
cancelable : Boolean [唯讀]
指出是否可避免與事件相關聯的行為指令。 | Event | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
currentTarget : Object [唯讀]
正主動使用事件偵聽程式處理 Event 物件的物件。 | Event | ||
direction : String
指定 focusIn 事件的焦點方向。 | FocusEvent | ||
eventPhase : uint [唯讀]
事件流程中的目前階段。 | Event | ||
isRelatedObjectInaccessible : Boolean
如果是 true,則 relatedObject 屬性會因為安全執行程序的因素而設定為 null。 | FocusEvent | ||
keyCode : uint
按下按鍵即會觸發 keyFocusChange 事件的按鍵碼值。 | FocusEvent | ||
relatedObject : InteractiveObject
受到焦點變更影響的互補 InteractiveObject 實體的參照。 | FocusEvent | ||
shiftKey : Boolean
指出是否已啟用 Shift 輔助按鍵,若已啟用則值為 true。 | FocusEvent | ||
target : Object [唯讀]
事件目標。 | Event | ||
type : String [唯讀]
事件類型。 | Event |
方法 | 定義自 | ||
---|---|---|---|
FocusEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false, relatedObject:InteractiveObject = null, shiftKey:Boolean = false, keyCode:uint = 0, direction:String = "none")
使用與焦點事件相關的特定資訊來建立 Event 物件。 | FocusEvent | ||
[覆寫]
建立 FocusEvent 物件的副本,並將每個屬性的值設為符合原始物件的屬性值。 | FocusEvent | ||
公用程式函數,可用來實作自訂 ActionScript 3.0 Event 類別中的 toString() 方法。 | Event | ||
指出物件是否有已定義的指定屬性。 | Object | ||
檢查是否已經對事件呼叫 preventDefault() 方法。 | Event | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
如果可以取消事件的預設行為指令,則取消該行為指令。 | Event | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
避免處理事件流程中,目前節點以及任何後續節點中的任何事件偵聽程式。 | Event | ||
避免處理接續在事件流程中的目前節點之後,後續節點中的任何事件偵聽程式。 | Event | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
[覆寫]
傳回包含 FocusEvent 物件所有屬性的字串。 | FocusEvent | ||
會傳回指定之物件的基本值。 | Object |
常數 | 定義自 | ||
---|---|---|---|
FOCUS_IN : String = "focusIn" [靜態]
定義 focusIn 事件物件的 type 屬性值。 | FocusEvent | ||
FOCUS_OUT : String = "focusOut" [靜態]
定義 focusOut 事件物件的 type 屬性值。 | FocusEvent | ||
KEY_FOCUS_CHANGE : String = "keyFocusChange" [靜態]
定義 keyFocusChange 事件物件的 type 屬性值。 | FocusEvent | ||
MOUSE_FOCUS_CHANGE : String = "mouseFocusChange" [靜態]
定義 mouseFocusChange 事件物件的 type 屬性值。 | FocusEvent |
direction | 屬性 |
isRelatedObjectInaccessible | 屬性 |
isRelatedObjectInaccessible:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 10, Flash Lite 4 |
如果是 true
,則 relatedObject
屬性會因為安全執行程序的因素而設定為 null
。如果 relatedObject
的名目值是另一個安全執行程序中 DisplayObject 的參考,則 relatedObject
會設定為 null
,除非跨越安全執行程序邊界的兩個方向都有權限。建立權限的方法包括:從 SWF 檔呼叫 Security.allowDomain()
、提供來自影像檔伺服器的原則檔案,以及於載入影像時設定 LoaderContext.checkPolicyFile
屬性。
實作
public function get isRelatedObjectInaccessible():Boolean
public function set isRelatedObjectInaccessible(value:Boolean):void
相關 API 元素
keyCode | 屬性 |
relatedObject | 屬性 |
relatedObject:InteractiveObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
受到焦點變更影響的互補 InteractiveObject 實體的參照。 例如,當 focusOut
事件發生時,relatedObject
代表 InteractiveObject 實體已經成為焦點。
在下列兩種情況下,這個屬性的值可能是 null
:沒有相關物件,或是有相關物件但它位在您無法存取的安全執行程序中。使用 isRelatedObjectInaccessible()
屬性可判斷哪個原因適用於此情況。
實作
public function get relatedObject():InteractiveObject
public function set relatedObject(value:InteractiveObject):void
相關 API 元素
shiftKey | 屬性 |
FocusEvent | () | 建構函式 |
public function FocusEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false, relatedObject:InteractiveObject = null, shiftKey:Boolean = false, keyCode:uint = 0, direction:String = "none")
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
使用與焦點事件相關的特定資訊來建立 Event 物件。 Event 物件會當做參數傳遞至事件偵聽程式。
參數type:String — 事件類型。可能的值包括:FocusEvent.FOCUS_IN 、FocusEvent.FOCUS_OUT 、FocusEvent.KEY_FOCUS_CHANGE 和 FocusEvent.MOUSE_FOCUS_CHANGE 。
| |
bubbles:Boolean (default = true ) — 判斷 Event 物件是否參與事件流程的反昇階段。
| |
cancelable:Boolean (default = false ) — 判斷是否可以取消 Event 物件。
| |
relatedObject:InteractiveObject (default = null ) — 指出受到焦點變更影響的互補 InteractiveObject 實體。 例如,當 focusIn 事件發生時,relatedObject 代表 InteractiveObject 已經失去焦點。
| |
shiftKey:Boolean (default = false ) — 指出是否已啟用 Shift 輔助按鍵。
| |
keyCode:uint (default = 0 ) — 指出按下按鍵即會觸發 keyFocusChange 事件的按鍵碼。
| |
direction:String (default = "none ") — 指出目標互動式物件的啟動方向。針對 focusIn 以外的所有事件,請設定為 FocusDirection.NONE (預設值)。
|
相關 API 元素
clone | () | 方法 |
toString | () | 方法 |
FOCUS_IN | 常數 |
public static const FOCUS_IN:String = "focusIn"
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定義 focusIn
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | true |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
keyCode | 0;僅套用至 keyFocusChange 事件。 |
relatedObject | 受到焦點變更影響的互補 InteractiveObject 實體。 |
shiftKey | false ;僅適用於 keyFocusChange 事件。 |
target | 剛成為焦點的 InteractiveObject 實體。 target 不會永遠都是顯示清單中註冊事件偵聽程式的物件。 請使用 currentTarget 屬性,存取目前正在處理該事件之顯示清單中的物件。
|
direction | 焦點的指派來源方向。此屬性會報告舞台之 assignFocus() 方法的 direction 參數值。如果是透過其他方式變更焦點,此值將固定為 FocusDirection.NONE 。僅適用於 focusIn 事件。對於其他所有焦點事件,此值將固定為 FocusDirection.NONE 。 |
相關 API 元素
FOCUS_OUT | 常數 |
public static const FOCUS_OUT:String = "focusOut"
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定義 focusOut
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | true |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
keyCode | 0;僅套用至 keyFocusChange 事件。 |
relatedObject | 受到焦點變更影響的互補 InteractiveObject 實體。 |
shiftKey | false ;僅適用於 keyFocusChange 事件。 |
target | 剛失去焦點的 InteractiveObject 實體。 target 不會永遠都是顯示清單中註冊事件偵聽程式的物件。 請使用 currentTarget 屬性,存取目前正在處理該事件之顯示清單中的物件。
|
相關 API 元素
KEY_FOCUS_CHANGE | 常數 |
public static const KEY_FOCUS_CHANGE:String = "keyFocusChange"
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定義 keyFocusChange
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | true |
cancelable | true ;呼叫 preventDefault() 方法來取消預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
keyCode | 按下按鍵即會觸發 keyFocusChange 事件的按鍵碼值。 |
relatedObject | 受到焦點變更影響的互補 InteractiveObject 實體。 |
shiftKey | true ,如果啟動了 Shift 輔助按鍵;否則為 false 。 |
target | 目前成為焦點的 InteractiveObject 實體。 target 不會永遠都是顯示清單中註冊事件偵聽程式的物件。 請使用 currentTarget 屬性,存取目前正在處理該事件之顯示清單中的物件。
|
相關 API 元素
MOUSE_FOCUS_CHANGE | 常數 |
public static const MOUSE_FOCUS_CHANGE:String = "mouseFocusChange"
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定義 mouseFocusChange
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | true |
cancelable | true ;呼叫 preventDefault() 方法來取消預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
keyCode | 0;僅套用至 keyFocusChange 事件。 |
relatedObject | 受到焦點變更影響的互補 InteractiveObject 實體。 |
shiftKey | false ;僅適用於 keyFocusChange 事件。 |
target | 目前成為焦點的 InteractiveObject 實體。 target 不會永遠都是顯示清單中註冊事件偵聽程式的物件。 請使用 currentTarget 屬性,存取目前正在處理該事件之顯示清單中的物件。
|
相關 API 元素
FocusEventExample
和 CustomSprite
類別,說明如何將焦點與在舞台上繪製的項目搭配使用,以便捕捉事件並列印資訊。 這個範例會執行下列工作:
- 宣告 Sprite 類型的
child
屬性以及 uint 類型的childCount
屬性。 for
迴圈會在 (0,0) 建立五個淺藍色的方形。 從指定child
給新 CustomSprite 實體開始。 每次建立 CustomSprite 物件時,下列動作就會發生:- unit 類型的
size
屬性會設定為 50 像素,而bgColor
設定為淺藍色。 - Sprite 類別的
buttonMode
anduseHandCursor
屬性在建構函式內會設定為true
。 click
類型的事件偵聽程式會隨著相關聯的訂閱者clickHandler()
一起實體化。 訂閱者方法會建立一個 Sprite 類型的區域變數target
,並在按下方塊時指定。 接著,舞台的焦點會指定至target
。- 呼叫
draw()
方法,藉由呼叫 Graphics 類別的beginFill()
、drawRect()
和endFill()
方法建立 50 x 50 像素的方形和 instance 屬性。
- unit 類型的
- 在 for 迴圈中,會呼叫
configureListeners()
方法來將三個事件偵聽程式/訂閱者實體化:- 在按下顯示清單物件 (方塊) 的
click
事件之後傳送focusIn
/focusInHandler()
。 focusOut
/focusOutHandler()
會在按下另一個方塊時傳送,或是焦點離開「舞台」(例如,在 Flash Player 之外的地方按一下) 時傳送。keyFocusChange
/keyFocusChangeHandler()
會在您使用 Tab 鍵或向左鍵或向右鍵,以選取顯示清單物件時傳送。 不過,keyFocusChangeHandler()
方法會擷取向左鍵和向右鍵,然後呼叫preventDefault()
方法來停用這些按鍵。
- 在按下顯示清單物件 (方塊) 的
- 在
for
迴圈中,每個正方形都會加入至顯示清單,然後全部都顯示在相同區域中 (透過addChild()
加入)。 - 建構函式接著會呼叫
refreshLayout()
,將這些橘色方形以 5 像素的間隔橫跨分散在顯示畫面的頂端 (y = 0)。
package { import flash.display.Sprite; import flash.display.DisplayObject; import flash.events.FocusEvent; import flash.events.IEventDispatcher; public class FocusEventExample extends Sprite { private var gutter:uint = 5; private var childCount:uint = 5; public function FocusEventExample() { var child:Sprite; for(var i:uint; i < childCount; i++) { child = new CustomSprite(); configureListeners(child); addChild(child); } refreshLayout(); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(FocusEvent.FOCUS_IN, focusInHandler); dispatcher.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); dispatcher.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); dispatcher.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); } private function refreshLayout():void { var ln:uint = numChildren; var child:DisplayObject = getChildAt(0); var lastChild:DisplayObject = child; for(var i:uint = 1; i < ln; i++) { child = getChildAt(i); child.x = lastChild.x + lastChild.width + gutter; lastChild = child; } } private function focusInHandler(event:FocusEvent):void { var target:CustomSprite = CustomSprite(event.target); trace("focusInHandler: " + target.name); } private function focusOutHandler(event:FocusEvent):void { var target:CustomSprite = CustomSprite(event.target); trace("focusOutHandler: " + target.name); } private function keyFocusChangeHandler(event:FocusEvent):void { if(event.keyCode == 39 || event.keyCode == 37){ event.preventDefault() } var target:CustomSprite = CustomSprite(event.target); trace("keyFocusChangeHandler: " + target.name); } private function mouseFocusChangeHandler(event:FocusEvent):void { var target:CustomSprite = CustomSprite(event.target); trace("mouseFocusChangeHandler: " + target.name); } } } import flash.display.Sprite; import flash.events.MouseEvent; class CustomSprite extends Sprite { private var size:uint = 50; private var bgColor:uint = 0x00CCFF; public function CustomSprite() { buttonMode = true; useHandCursor = true; addEventListener(MouseEvent.CLICK, clickHandler); draw(size, size); } private function draw(w:uint, h:uint):void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, w, h); graphics.endFill(); } private function clickHandler(event:MouseEvent):void { var target:Sprite = Sprite(event.target); trace("clickHandler: " + target.name); stage.focus = target; } }
Tue Jun 12 2018, 03:47 PM Z