使用 FocusManager

要在应用程序中创建焦点导航,请在应接收焦点的任何对象(包括按钮)上设置 tabIndex 属性。当用户按下 Tab 键时,FocusManager 就会查找一个已启用对象,此对象应具有比 tabIndex 当前值更高的 tabIndex 属性。FocusManager 达到 tabIndex 属性的最高值后,它就会返回到零。因此,在以下范例中,首先 comment 对象(可能是 TextArea 组件)接收焦点,然后 okButton 对象接收焦点:

comment.tabIndex = 1;
okButton.tabIndex = 2;

要创建一个当用户按下 Enter 键 (Windows) 或者 Return 键 (Macintosh) 时接收焦点的按钮,可将 FocusManager.defaultPushButton 属性设为所需按钮的实例名称,如下所示:

focusManager.defaultPushButton = okButton;

注意:FocusManager 与对象放在舞台上的时间(对象的深度顺序)有关,而与它们在舞台上的相对位置无关。这与 Flash Player 处理 Tab 键排序的方式不同。

FocusManager 参数

FocusManager 没有创作参数。你必须使用“动作”面板中 FocusManager 类的动作脚本方法和属性。有关详细信息,请参阅 FocusManager 类

创建具有 FocusManager 的应用程序

以下步骤会在 Flash 应用程序中创建一个焦点方案。

  1. 将 TextInput 组件从“组件”面板拖到舞台中。
  2. 在属性检查器中,为它分配实例名称 comment
  3. 将 Button 组件从“组件”面板拖到舞台中。
  4. 在属性检查器中,为它分配实例名称 okButton,并将标签参数设置为 OK
  5. 在“动作”面板的第 1 帧中,输入下列代码:
    comment.tabIndex = 1;
    okButton.tabIndex = 2;
    focusManager.setFocus(comment);
    focusManager.defaultPushButton = okButton;
    lo = new Object();
    lo.click = function(){
      trace("button was clicked");
    }
    okButton.addEventListener("click", lo);
    

    这段代码设置了 Tab 键顺序,并指定一个默认按钮,在用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时可以用来接收 click 事件。