创建自定义焦点导航

当用户按 Tab 键在 Flash 应用程序中导航,或在应用程序中单击时,FocusManager 类确定接收输入焦点的组件(有关详细信息,请参阅"组件语言参考"中的 FocusManager 类。您不必在应用程序中添加 FocusManager 实例,也不必编写任何代码来激活 Focus Manager。

如果 RadioButton 对象接收焦点,焦点管理器将检查该对象和具有相同 groupName 值的所有对象,然后将焦点设置在 selected 属性设置为 true 的对象上。

每个模式窗口组件都包含焦点管理器的一个实例,因此,该窗口上的控件也就成为它们自己的 Tab 集。这样可以防止用户按 Tab 键切换到其它窗口中的组件。

要在应用程序中创建焦点导航,请在应该接收焦点的所有组件(包括按钮)上设置 tabIndex 属性。当用户按 Tab 键时,FocusManager 类便查找 tabIndex 值大于 tabIndex 当前值的已启用对象。FocusManager 类一旦达到最高的 tabIndex 属性值,则返回到 0。例如,在下面的代码中,comment 对象(可能是一个 TextArea 组件)首先接收焦点,然后 okButton 实例接收焦点:

var comment:mx.controls.TextArea;
var okButton:mx.controls.Button;
comment.tabIndex = 1;
okButton.tabIndex = 2;

您还可以使用"辅助功能"面板来分配 Tab 键索引值。

如果舞台上没有任何对象具有 Tab 键索引值,则焦点管理器使用深度级别(z-顺序)。深度级别主要按组件拖到舞台上的顺序设置;但是,也可以使用"修改">"排列">"移至顶层"或"移至底层"命令来确定最终的 z-顺序。

要将焦点指定给应用程序中的组件,请调用 FocusManager.setFocus()

要创建在用户按下 Enter 键 (Windows) 或 Return 键 (Macintosh) 时接收焦点的按钮,请将 FocusManager.defaultPushButton 属性设置为所需按钮的实例,如下面的代码所示:

focusManager.defaultPushButton = okButton;

FocusManager 类 (API) 会覆盖默认的 Flash Player 聚焦框,并绘制一个圆角的自定义聚焦框。

有关在 Flash 应用程序中创建焦点切换方案的详细信息,请参阅"组件语言参考"中的 FocusManager 类