使用 ActionScript 控制焦点

可以使用 Selection ActionScript 对象获取并设置小键盘当前焦点,也可以在对象收到或失去小键盘焦点时收到通知。这非常有用,例如,如果您要在应用程序首次加载时将焦点自动设置到特定的按钮上或者,您可能希望在屏幕上的特定对象收到(或失去)小键盘焦点时收到通知,以便可以相应地更新屏幕。

例如,以下代码使用 Selection.setFocus() 方法将焦点设置到名为 login_btn 的按钮实例上:

Selection.setFocus(login_btn);

通过 Selection.onSetFocus 事件侦听器,可以确定小键盘焦点发生改变的时间。例如,您可以使用此事件侦听器为输入文本字段创建自定义焦点管理器,而不是使用默认的焦点矩形。以下过程说明如何创建用于更改具有焦点的 TextField 对象的边框颜色的自定义焦点管理器。此应用程序的完整版本(名为 custom_input_focus.fla)位于计算机上 Flash Professional 8 安装文件夹中的 /Sample and Tutorials/Samples/Flash Lite 2.0/ 文件夹中。

创建自定义文本输入焦点管理器:

  1. 使用在"Flash Lite 2.x 入门"的创建 Flash Lite 文档模板(仅限 Flash Professional)中创建的 Flash Lite 2.0 通用文档模板创建一个新文档,并将其另存为 custom_input_focus.fla。
  2. 使用"文本"工具在舞台上创建一个文本字段。
  3. 在该文本字段仍处于选中状态时,在属性检查器的"文本类型"弹出菜单中选择"输入文本",在"实例名称"文本框中键入"inputTxt_1",然后选择"在文本周围显示边框"选项。
  4. 以同样的方式在第一个文本字段下方创建另一个输入文本字段(其实例名称为"inputTxt_2"),然后为第二个文本字段选择"在文本周围显示边框"选项。
  5. 在时间轴中,选择名为 ActionScript 的图层上的第 1 帧。
  6. 打开"动作"面板("窗口">"动作"),然后输入(或复制并粘贴)以下代码:
    // 全局性禁用焦点矩形:
    _focusrect = false;
    // 创建 Selection 侦听器对象:
    var focusListener:Object = new Object ();
    // 定义 onSetFocus 方法:
    focusListener.onSetFocus = function (oldFocus, newFocus) {
        // 启用/禁用选择指示符:
        if (newFocus instanceof TextField) {
            // 将具有新焦点的文本字段的边框颜色设置为红色:
            newFocus.borderColor = 0xFF0000;
        }
        if (oldFocus != undefined && oldFocus instanceof TextField) {
            // 将具有旧焦点的文本字段的边框颜色设置为黑色:
            oldFocus.borderColor = 0x000000;
        }
    };
    // 将侦听器添加到 Selection 对象中:
    Selection.addListener (focusListener);
    // 在应用程序加载时设置初始焦点:
    Selection.setFocus (inputTxt_1);
    // 启用全屏模式:
    fscommand2 ("FullScreen", true);
    
  7. 保存所做的更改,然后在模拟器中测试应用程序。
  8. 按模拟器的下箭头键和上箭头键,在两个文本字段之间切换小键盘焦点。具有焦点的文本字段应具有红色边框,而没有焦点的文本字段应具有黑色边框。当文本字段具有焦点时,按选择键使文本输入对话框显示出来。