包 | fl.managers |
类 | public class FocusManager |
继承 | FocusManager Object |
实现 | IFocusManager |
语言版本: | ActionScript 3.0 |
产品版本: | Flash CS3 |
运行时版本: | Flash Player 9.0.28.0, AIR 1.0 |
一般使用 Tab 键来导航 Tab 键循环,焦点以循环方式在 Tab 键循环中的组件之间移动,从具有焦点的第一个组件到最后一个,然后再回到第一个。Tab 键循环包含所有组件和容器中支持 Tab 的组件。 一个应用程序可以包含许多 Tab 键循环。
一个 FocusManager 实例负责一个 Tab 键循环,虽然主应用程序始终与至少一个 FocusManager 实例相关联,但是应用程序使用不同的 FocusManager 实例来管理它包含的每个 Tab 键循环。 如果应用程序包含弹出窗口,可以要求附加 FocusManager 实例,例如,分别包含一个或多个组件的 Tab 键循环的情况。
可由 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 [只读]
获取要在此 Tab 键循环中使用的下一个唯一 Tab 键索引。 | 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
,则焦点管理器会监视 Enter 键,并且如果在不是 Button 组件的组件具有焦点时按下 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 Player 可以为 Flash 组件的子组件设置焦点,所以此方法可以确定从组件角度看具有焦点的交互式对象。
参数
component:InteractiveObject — 具有 Flash Player 级别的焦点的对象。
|
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, 11:04 AM Z