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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

FocusManager 类为由鼠标或键盘作为 Tab 键循环导航的一组组件管理焦点。

一般使用 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 事件。

查看示例

另请参见

IFocusManager
IFocusManagerComponent



公共 属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  defaultButton : Button
获取或设置当前默认按钮。
FocusManager
  defaultButtonEnabled : Boolean
获取或设置一个值,该值指示是否启用默认按钮。
FocusManager
  nextTabIndex : int
[read-only] 获取要在此 Tab 键循环中使用的下一个唯一 Tab 键索引。
FocusManager
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
  showFocusIndicator : Boolean
获取或设置一个值,该值指示是否应用可视焦点指示符标记具有焦点的组件。
FocusManager
公共 方法
 方法定义方
  
创建新的 FocusManager 实例。
FocusManager
  
激活 FocusManager 实例。
FocusManager
  
取消激活 FocusManager。
FocusManager
  
检索包含给定对象的交互式对象(如果有)。
FocusManager
  
获取当前具有焦点的交互式对象。
FocusManager
  
检索交互式对象,该对象会在用户按下 Tab 键以定位到下一个对象时获得焦点。
FocusManager
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
将 showFocusIndicator 值设置为 false,并从具有焦点的对象(如果有)上删除可视的焦点指示符。
FocusManager
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
将焦点设置到 IFocusManagerComponent 组件。
FocusManager
 Inherited
设置循环操作动态属性的可用性。
Object
  
将 showFocusIndicator 值设置为 true,并在具有焦点的对象(如果有)上绘制可视的焦点指示符。
FocusManager
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
defaultButton属性
defaultButton:Button  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

获取或设置当前默认按钮。

默认按钮是表单上的一个按钮,当按下 Enter 键时,它会根据当时焦点所在的位置调度 click 事件。


实现
    public function get defaultButton():Button
    public function set defaultButton(value:Button):void
defaultButtonEnabled属性 
defaultButtonEnabled:Boolean  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

获取或设置一个值,该值指示是否启用默认按钮。 如果此值设置为 true,则焦点管理器会监视 Enter 键,并且如果在不是 Button 组件的组件具有焦点时按下 Enter 键,即会调度默认按钮的 click 事件。 如果此值设置为 false,则焦点管理器不监视 Enter 键。 使用 Enter 键的组件将此属性设置为 false,以防止有默认按钮并且用户按 Enter 键的情况下,在默认按钮上调度 click 事件。


实现
    public function get defaultButtonEnabled():Boolean
    public function set defaultButtonEnabled(value:Boolean):void
nextTabIndex属性 
nextTabIndex:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

获取要在此 Tab 键循环中使用的下一个唯一 Tab 键索引。


实现
    public function get nextTabIndex():int
showFocusIndicator属性 
showFocusIndicator:Boolean  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

获取或设置一个值,该值指示是否应用可视焦点指示符标记具有焦点的组件。


实现
    public function get showFocusIndicator():Boolean
    public function set showFocusIndicator(value:Boolean):void
构造函数详细信息
FocusManager()构造函数
public function FocusManager(container:DisplayObjectContainer)

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

创建新的 FocusManager 实例。

焦点管理器管理 DisplayObjectContainer 对象的子对象内的焦点。

参数
container:DisplayObjectContainer — 承载焦点管理器的 DisplayObjectContainer,或 stage
方法详细信息
activate()方法
public function activate():void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

激活 FocusManager 实例。

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

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

取消激活 FocusManager。

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

findFocusManagerComponent()方法 
public function findFocusManagerComponent(component:InteractiveObject):InteractiveObject

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

检索包含给定对象的交互式对象(如果有)。 因为 Flash Player 可以为 Flash 组件的子组件设置焦点,所以此方法可以确定从组件角度看具有焦点的交互式对象。

参数

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

返回
InteractiveObject — 包含 component 的对象,或者,如果没有找到,则为 component 本身。
getFocus()方法 
public function getFocus():InteractiveObject

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

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

返回
InteractiveObject — 当前具有焦点的交互式对象。
getNextFocusManagerComponent()方法 
public function getNextFocusManagerComponent(backward:Boolean = false):InteractiveObject

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

检索交互式对象,该对象会在用户按下 Tab 键以定位到下一个对象时获得焦点。 如果在应用程序中没有其它有效对象,此方法将检索当前具有焦点的对象。

参数

backward:Boolean (default = false) — 如果此参数设置为 true,焦点将向后移动,如果按下 Shift+Tab 键,此方法会检索下一个获得焦点的对象。

返回
InteractiveObject — 将获得焦点的下一个组件。
hideFocus()方法 
public function hideFocus():void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

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

setFocus()方法 
public function setFocus(component:InteractiveObject):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

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

参数

component:InteractiveObject — 可以获得焦点的对象。

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

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

示例 如何使用示例

此示例演示如何使用 FocusManager 类在舞台上的组件之间切换焦点。

若要运行该示例,请按照下列步骤操作:

  1. 将 TextInput 组件添加到库中。
  2. 将该代码作为 FocusManagerExample.as 另存到 FLA 文件所在的同一目录中。
  3. 将 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);
        }
    }
}




 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/fl/managers/FocusManager.html