mx.managers
public class FocusManager
继承FocusManager Inheritance Object
实现 IFocusManager

FocusManager 类管理组件上的焦点,以响应鼠标活动或键盘活动(Tab 键)。一个应用程序中可以包含多个 FocusManager 实例。每个 FocusManager 实例负责一组可组成“Tab 键循环”的组件。如果单击 Tab 的次数足够多,焦点将遍历一组组件,最终返回到具有焦点的第一个组件。这就是一个“Tab 键循环”,由 FocusManager 实例管理此循环。如果弹出窗口本身包含一组可构成“Tab 键循环”的组件,那么这些弹出窗口将拥有自己的 FocusManager 实例。主应用程序通常都包含 FocusManager 实例。

FocusManager 管理“组件级别”的焦点。在 Flex 中,只有组件中的 UITextField 允许使用键盘输入文本。对于 Flash Player 或 AIR,该 UITextField 具有焦点。然而,从 FocusManager 的角度来说,具有焦点的却是作为 UITextField 的父项的组件。因此,组件级别的焦点与播放器级别的焦点是不同的。应用程序开发人员一般只需要处理组件级别的焦点,而组件开发人员则必须通晓播放器级别的焦点。

可以由 FocusManager 管理的所有组件都必须实现 mx.managers.IFocusManagerComponent,但由播放器级别的焦点管理的对象则不必实现。

FocusManager 还可以管理 defaultButton 的概念,这是表单上的一个 Button,用于在按下 Enter 键时根据焦点当时所在的位置调度 click 事件。



公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  defaultButton : IButton
对原始的默认 Button 控件的引用。
FocusManager
  defaultButtonEnabled : Boolean
一个标志,指示 FocusManager 是否应检查为激活默认按钮而要按下的 Enter 键。
FocusManager
  focusPane : Sprite
随着焦点在各容器之间移动的单个 Sprite。
FocusManager
  nextTabIndex : int
[只读 (read-only)] 此 Tab 键循环中要用到的下一个唯一的 tab 索引。
FocusManager
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  showFocusIndicator : Boolean
一个标志,指示是否显示用于指示组件具有焦点的指示符。
FocusManager
公共方法
 方法定义方
  
FocusManager(container:IFocusManagerContainer, popup:Boolean = false)
构造函数。
FocusManager
  
如果同时有多个 IFocusManagerContainer 可见,则 SystemManager 将激活 FocusManager,然后取消激活。
FocusManager
  
对于顶级焦点管理器以及所创建的可获焦点内容的每个新桥的父焦点管理器调用此方法。
FocusManager
  
如果同时有多个 IFocusManagerContainer 可见,则 SystemManager 将激活 FocusManager,然后取消激活。
FocusManager
  
返回包含给定对象(如果有)的 IFocusManagerComponent。
FocusManager
  
获取当前具有焦点的 IFocusManagerComponent 组件。
FocusManager
  
返回 IFocusManagerComponent,当用户按下 Tab 键导航到下一个组件时,它可以获取焦点。
FocusManager
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
将 showFocusIndicator 设置为 false,并从具有焦点的对象(如果有)上删除可视的焦点指示符。
FocusManager
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
moveFocus(direction:String, fromDisplayObject:DisplayObject = null):void
将焦点从当前控件移至 Tab 键顺序中的上一个或下一个控件。
FocusManager
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
FocusManager
  
将焦点设置到 IFocusManagerComponent 组件。
FocusManager
 Inherited
设置循环操作动态属性的可用性。
Object
  
将 showFocusIndicator 设置为 true,并在具有焦点的对象(如果有)上绘制可视的焦点指示符。
FocusManager
  
返回承载 FocusManager 对象的组件的 String 表示形式,并在该 String 末尾追加 String“.focusManager”。
FocusManager
 Inherited
返回指定对象的原始值。
Object
属性详细信息
defaultButton属性
defaultButton:IButton  [读写]

对原始的默认 Button 控件的引用。当任何控件上有焦点时按 Enter 键可调度 Button 控件上的 click 事件,从而激活 Button 控件,效果与单击鼠标相同。如果将焦点授予了其它 Button 控件,却在当焦点不在按钮上时将焦点切换回原始控件,则默认 Button 控件实际上发生了更改。

此属性由 Flex 容器管理;请勿直接设置此属性来指定默认按钮。

defaultButton 必须属于 mx.controls.Button 类,即使此属性属于 IUIComponent 类型也不例外。



实现
    public function get defaultButton():IButton
    public function set defaultButton(value:IButton):void
defaultButtonEnabled属性 
defaultButtonEnabled:Boolean  [读写]

一个标志,指示 FocusManager 是否应检查为激活默认按钮而要按下的 Enter 键。TextArea 和希望识别 Enter 键的其它组件将此属性设置为 false,以禁止 Enter 键调度默认按钮上的 click 事件(如果存在)。



实现
    public function get defaultButtonEnabled():Boolean
    public function set defaultButtonEnabled(value:Boolean):void
focusPane属性 
focusPane:Sprite  [读写]

随着焦点在各容器之间移动的单个 Sprite。Sprite 将作为用于指示组件具有焦点的可视指示符的父项。



实现
    public function get focusPane():Sprite
    public function set focusPane(value:Sprite):void
nextTabIndex属性 
nextTabIndex:int  [只读 (read-only)]

此 Tab 键循环中要用到的下一个唯一的 tab 索引。



实现
    public function get nextTabIndex():int
showFocusIndicator属性 
showFocusIndicator:Boolean  [读写]

一个标志,指示是否显示用于指示组件具有焦点的指示符。如果为 true,则获得焦点的组件将绘制一个可视指示符,指示它具有焦点。

默认为 false,如果用户使用 Tab 键,则将其设为 true

通常情况下,最好使用 showFocus()hideFocus() 方法更改此属性,因为这些方法还会更新用于指示组件具有焦点的可视指示符。



实现
    public function get showFocusIndicator():Boolean
    public function set showFocusIndicator(value:Boolean):void
构造函数详细信息
FocusManager()构造函数
public function FocusManager(container:IFocusManagerContainer, popup:Boolean = false)

构造函数。

FocusManager 管理 IFocusManagerContainer 的子项内的焦点。它会在执行构造函数期间在 IFocusManagerContainer 中自行安装。

参数
container:IFocusManagerContainer — 承载 FocusManager 的 IFocusManagerContainer。
 
popup:Boolean (default = false) — 如果为 true,则表明该容器是一个弹出组件,而不是主应用程序。
方法详细信息
activate()方法
public function activate():void

如果同时有多个 IFocusManagerContainer 可见,则 SystemManager 将激活 FocusManager,然后取消激活。如果在具有已取消激活 FocusManager 的 IFocusManagerContainer 中单击鼠标,则 SystemManager 将对该 FocusManager 调用 activate() 方法。已激活的 FocusManager 将首先调用自身的 deactivate() 方法,然后再激活另一个 FocusManager。

FocusManager 可以添加允许其监视与焦点相关的键盘和鼠标活动的事件处理程序。

addSWFBridge()方法 
public function addSWFBridge(bridge:IEventDispatcher, owner:DisplayObject):void

对于顶级焦点管理器以及所创建的可获焦点内容的每个新桥的父焦点管理器调用此方法。调用可获焦点的新内容的父焦点管理器后,可获焦点的内容将成为 Tab 键顺序的一部分。调用顶级焦点管理器后,桥即成为顶级焦点管理器所管理的焦点管理器之一。

参数

bridge:IEventDispatcher
 
owner:DisplayObject

deactivate()方法 
public function deactivate():void

如果同时有多个 IFocusManagerContainer 可见,则 SystemManager 将激活 FocusManager,然后取消激活。如果在具有已取消激活 FocusManager 的 IFocusManagerContainer 中单击鼠标,则 SystemManager 将对该 FocusManager 调用 activate() 方法。已激活的 FocusManager 将首先调用自身的 deactivate() 方法,然后再激活另一个 FocusManager。

FocusManager 可以删除允许其监视与焦点相关的键盘和鼠标活动的事件处理程序。

findFocusManagerComponent()方法 
public function findFocusManagerComponent(o:InteractiveObject):IFocusManagerComponent

返回包含给定对象(如果有)的 IFocusManagerComponent。因为播放器可以为 Flex 组件的子组件设置焦点,所以此方法可以从组件角度确定具有焦点的 IFocusManagerComponent。

参数

o:InteractiveObject — 具有 Flash Player 级别的焦点的对象。

返回
IFocusManagerComponent — 包含 onull 的 IFOcusManagerComponent
getFocus()方法 
public function getFocus():IFocusManagerComponent

获取当前具有焦点的 IFocusManagerComponent 组件。建议调用此方法而不要使用 Stage 对象,因为此方法可以指示哪个组件具有焦点。Stage 可能会返回该组件中的子组件。

返回
IFocusManagerComponent — 具有焦点的 IFocusManagerComponent 对象。
getNextFocusManagerComponent()方法 
public function getNextFocusManagerComponent(backward:Boolean = false):IFocusManagerComponent

返回 IFocusManagerComponent,当用户按下 Tab 键导航到下一个组件时,它可以获取焦点。如果应用程序中不存在其它的有效组件,则会返回与当前具有焦点的组件相同的组件。

参数

backward:Boolean (default = false) — 如果为 true,则返回该对象,就像按下了 Shift-Tab 一样。

返回
IFocusManagerComponent — 要接收焦点的组件。
hideFocus()方法 
public function hideFocus():void

showFocusIndicator 设置为 false,并从具有焦点的对象(如果有)上删除可视的焦点指示符。

moveFocus()方法 
public function moveFocus(direction:String, fromDisplayObject:DisplayObject = null):void

将焦点从当前控件移至 Tab 键顺序中的上一个或下一个控件。移动的方向由 direction 参数指定。

参数

direction:StringFocusRequestDirection.FORWARD 将焦点从当前具有焦点的控件移至选项卡索引较高的控件。如果多个控件的索引相同,则将访问文档流中的下一个控件。FocusRequestDirection.BACKWARD 将焦点移至选项卡索引较低的控件。FocusRequestDirection.TOP 将焦点移至选项卡索引最低的控件。如果多个控件的索引相同,则将焦点移至文档流中的第一个控件。FocusRequestDirection.BOTTOM 将焦点移至选项卡索引最高的控件。如果多个控件的索引相同,则将焦点移至文档流中的最后一个控件。
 
fromDisplayObject:DisplayObject (default = null) — 移动焦点的起始点。如果提供了对象,则此行为优先于从当前具有焦点的对象移动焦点这一默认行为。

removeSWFBridge()方法 
public function removeSWFBridge(bridge:IEventDispatcher):void

参数

bridge:IEventDispatcher

setFocus()方法 
public function setFocus(o:IFocusManagerComponent):void

将焦点设置到 IFocusManagerComponent 组件。此方法不检查组件的可见性、启用状态或任何其它条件。

参数

o:IFocusManagerComponent — 一个可以接收焦点的组件。

showFocus()方法 
public function showFocus():void

showFocusIndicator 设置为 true,并在具有焦点的对象(如果有)上绘制可视的焦点指示符。

toString()方法 
public function toString():String

返回承载 FocusManager 对象的组件的 String 表示形式,并在该 String 末尾追加 String ".focusManager"

返回
String — 返回承载 FocusManager 对象的组件的 String 表示形式,并在该 String 末尾追加 String ".focusManager"