套件 | fl.managers |
類別 | public class FocusManager |
繼承 | FocusManager Object |
實作 | IFocusManager |
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
定位鍵迴圈通常是使用定位鍵來進行瀏覽。焦點會依照定位鍵迴圈,以循環的模式在組件之間移動,從成為焦點的第一個組件到最後一個,然後再回到第一個。 定位鍵迴圈會將所有的組件和啟用定位鍵的組件包含在容器中。 一個應用程式可以包含許多定位鍵迴圈。
FocusManager 實體負責管理單一定位鍵迴圈。儘管主應用程式必定與至少一個 FocusManager 實體有關聯,但應用程式還是會使用不同的 FocusManager 實體來管理它所包含的每個定位鍵迴圈。 如果應用程式包含快顯視窗 (例如,分別包含組件的一個或多個定位鍵迴圈),則可能還需要其他的 FocusManager 實體。
所有可由 FocusManager 實體管理的組件都必須實作 fl.managers.IFocusManagerComponent 介面。 如果物件的焦點是由 Flash Player 管理,就不需要實作 IFocusManagerComponent 介面。
FocusManager 類別也會管理實作預設按鈕的方式。 在表單上按下 Enter 鍵時,預設按鈕會根據焦點當時所在的位置傳送 click
事件。 如果文字區域成為焦點,或者正在組件中 (例如,在 ComboBox 或 NumericStepper 組件中) 編輯某個值,則預設按鈕不會傳送 click
事件。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
defaultButton : Button
會取得或設定目前的預設按鈕。 | FocusManager | ||
defaultButtonEnabled : Boolean
取得或設定值,指出是否已啟用預設按鈕。 | FocusManager | ||
form : DisplayObjectContainer
IFocusManager 的基底 DisplayObjectContainer,通常是舞台。 | FocusManager | ||
nextTabIndex : int [唯讀]
會取得要在此定位鍵迴圈中使用的下一個唯一定位鍵索引。 | FocusManager | ||
showFocusIndicator : Boolean
取得或設定值,指出是否要以視覺化焦點指示器來標示成為焦點的組件。 | FocusManager |
方法 | 定義自 | ||
---|---|---|---|
FocusManager(container:DisplayObjectContainer)
建立新的 FocusManager 實體。 | FocusManager | ||
會啟動 FocusManager 實體。 | FocusManager | ||
會停用 FocusManager。 | FocusManager | ||
會擷取包含指定物件的互動式物件 (如果有的話)。 | FocusManager | ||
會取得目前成為焦點的互動式物件。 | FocusManager | ||
會擷取互動式物件,它會在使用者按下 Tab 鍵瀏覽至下一個物件時接收焦點。 | FocusManager | ||
指出物件是否有已定義的指定屬性。 | Object | ||
會將 showFocusIndicator 值設定為 false,並從取得焦點的物件 (如果有的話) 移除視覺化焦點指示器。 | FocusManager | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會將焦點設定為 IFocusManagerComponent 組件。 | FocusManager | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
會將 showFocusIndicator 值設定為 true,並在取得焦點的物件 (如果有的話) 上繪製視覺化焦點指示器。 | FocusManager | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object |
defaultButton | 屬性 |
defaultButtonEnabled | 屬性 |
defaultButtonEnabled:Boolean
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
取得或設定值,指出是否已啟用預設按鈕。 如果將這個值設定為 true
,並在非 Button 組件的組件具有焦點時按下 Enter 鍵,焦點管理員便會監視 Enter 鍵,並且在預設按鈕上傳送 click
事件。 如果將這個值設定為 false
,則焦點管理員不會監視 Enter 鍵。 使用 Enter 鍵的組件會將此屬性設定為 false
,避免當使用者按下 Enter 鍵時在預設按鈕 (如果有的話) 上傳送 click
事件。
實作
public function get defaultButtonEnabled():Boolean
public function set defaultButtonEnabled(value:Boolean):void
form | 屬性 |
form:DisplayObjectContainer
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9.0.28.0 |
IFocusManager 的基底 DisplayObjectContainer,通常是舞台。
實作
public function get form():DisplayObjectContainer
public function set form(value:DisplayObjectContainer):void
nextTabIndex | 屬性 |
showFocusIndicator | 屬性 |
FocusManager | () | 建構函式 |
public function FocusManager(container:DisplayObjectContainer)
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
建立新的 FocusManager 實體。
焦點管理員會管理 DisplayObjectContainer 物件之子系內的焦點。
參數container:DisplayObjectContainer — DisplayObjectContainer,其中裝載焦點管理員或 stage 。
|
activate | () | 方法 |
public function activate():void
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會啟動 FocusManager 實體。
FocusManager 實體會加入讓它監視焦點相關之鍵盤和滑鼠活動的事件處理常式。
deactivate | () | 方法 |
public function deactivate():void
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會停用 FocusManager。
FocusManager 會移除它用來監視與焦點相關之鍵盤及滑鼠活動的事件處理常式。
findFocusManagerComponent | () | 方法 |
public function findFocusManagerComponent(component:InteractiveObject):InteractiveObject
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會擷取包含指定物件的互動式物件 (如果有的話)。 播放程式可以將焦點設定為 Flash 組件的子組件。此方法會從組件的觀點來判斷哪個互動式物件成為焦點。
參數
component:InteractiveObject — 可以具有播放程式層級焦點的物件。
|
InteractiveObject — 包含 component 的物件;如果找不到此物件,即為 component 本身。
|
getFocus | () | 方法 |
public function getFocus():InteractiveObject
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會取得目前成為焦點的互動式物件。 Adobe 建議您呼叫此方法 (而非使用 Stage 物件),因為它會指出哪個組件成為焦點。 Stage 可能會傳回該組件中的子組件。
傳回值InteractiveObject — 目前成為焦點的互動式物件。
|
getNextFocusManagerComponent | () | 方法 |
public function getNextFocusManagerComponent(backward:Boolean = false):InteractiveObject
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會擷取互動式物件,它會在使用者按下 Tab 鍵瀏覽至下一個物件時接收焦點。 如果應用程式沒有其他有效的物件,此方法會擷取目前成為焦點的物件。
參數
backward:Boolean (default = false ) — 如果將此參數設定為 true ,則焦點會以倒退方向移動,使得此方法在按下 Shift+Tab 鍵組合之後,擷取下一個接收焦點的物件。
|
InteractiveObject — 緊接著要接收焦點的組件。
|
hideFocus | () | 方法 |
public function hideFocus():void
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會將 showFocusIndicator
值設定為 false
,並從取得焦點的物件 (如果有的話) 移除視覺化焦點指示器。
setFocus | () | 方法 |
public function setFocus(component:InteractiveObject):void
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會將焦點設定為 IFocusManagerComponent 組件。 此方法不會檢查組件的可見性、啟用狀態或其他條件。
參數
component:InteractiveObject — 可以接收焦點的物件。
|
showFocus | () | 方法 |
public function showFocus():void
語言版本: | ActionScript 3.0 |
產品版本: | Flash CS3 |
執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會將 showFocusIndicator
值設定為 true
,並在取得焦點的物件 (如果有的話) 上繪製視覺化焦點指示器。
若要執行範例,請遵循下列步驟:
- 將 TextInput 組件加入元件庫。
- 將此程式碼另存為 FocusManagerExample.as,與 FLA 檔放在同一個目錄中。
- 將 FLA 檔中的 Document 類別設定為 FocusManagerExample。
package { import fl.controls.TextInput; import fl.managers.FocusManager; import flash.display.InteractiveObject; import flash.display.Sprite; import flash.events.*; import flash.utils.Timer; public class FocusManagerExample extends Sprite { private var fm:FocusManager; public function FocusManagerExample() { buildGridOfTextInputs(); fm = new FocusManager(this); var t:Timer = new Timer(1000); t.addEventListener(TimerEvent.TIMER,secondPassed); t.start(); } private function buildGridOfTextInputs():void { var rowSpacing:uint = 30; var colSpacing:uint = 110; var totalRows:uint = 4; var totalCols:uint = 3; var i:uint; for(i = 0; i < totalRows * totalCols; i++) { var ti:TextInput = new TextInput() ti.name = "component"+i.toString(); ti.addEventListener(FocusEvent.FOCUS_IN,focusChange); ti.setSize(100,20); ti.x = 10 + ((i % totalCols) * colSpacing); ti.y = 10 + (Math.floor(i / totalCols) * rowSpacing); ti.tabEnabled = true; addChild(ti); } } private function secondPassed(e:TimerEvent):void { var nextComponent:InteractiveObject = fm.getNextFocusManagerComponent(); fm.setFocus(nextComponent); } private function focusChange(e:FocusEvent):void { trace("Focus change: " + e.target.name); } } }
Tue Jun 12 2018, 03:47 PM Z