使用 TextArea 组件

TextArea 组件是本机 ActionScript TextField 对象的包装。可以使用 TextArea 组件来显示文本,如果 editable 属性为 true,也可以用它来编辑和接收文本输入。如果 wordWrap 属性设置为 true,则此组件可以显示或接收多行文本,并将较长的文本行换行。可以使用 restrict 属性限制用户能输入的字符,使用 maxChars 属性指定用户能输入的最大字符数。如果文本超出了文本区域的水平或垂直边界,则会自动出现水平和垂直滚动条,除非其关联的属性 horizontalScrollPolicyverticalScrollPolicy 设置为 off

在需要多行文本字段的任何地方都可使用 TextArea 组件。例如,您可以在表单中使用 TextArea 组件作为注释字段。可以设置侦听器来检查当用户切换到该字段外时,该字段是否为空。侦听器可能会显示错误信息,以指明必须在该字段中输入注释。

如果需要单行文本字段,请使用 TextInput 组件。

可以使用 setStyle() 方法来设置 textFormat 样式,以更改 TextArea 实例中所显示文本的样式。还可以在 ActionScript 中通过使用 htmlText 属性用 HTML 来设置 TextArea 组件的格式,并且可以将 displayAsPassword 属性设置为 true,以用星号遮蔽文本。如果将 condenseWhite 属性设置为 true,则 Flash 会删除新文本中由于空格、换行符等造成的多余空白。这对控件中已经存在的文本没有影响。

与 TextArea 组件的用户交互

在应用程序中可以启用或禁用 TextArea 组件。在禁用状态下,它不接收鼠标或键盘输入。当启用时,它遵循与 ActionScript TextField 对象相同的焦点、选择和导航规则。当 TextArea 实例具有焦点时,可以使用以下按键来控制它:

说明

箭头键

在文本内将插入点向上、向下、向左或向右移动(如果文本可编辑)。

Page Down

将插入点移到文本末尾(如果文本可编辑)。

Page Up

将插入点移到文本开头(如果文本可编辑)。

Shift+Tab

将焦点移到 Tab 键循环中的上一个对象。

Tab

将焦点移到 Tab 键循环中的下一个对象。

有关控制焦点的详细信息,请参阅《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》中的 FocusManager 类以及使用 FocusManager

TextArea 组件参数

您可以在“属性”检查器或“组件”检查器中为每个 TextArea 组件实例设置下列创作参数:condenseWhiteeditablehortizontalScrollPolicymaxCharsrestricttextverticalScrollPolicywordwrap。其中每个参数都有对应的同名 ActionScript 属性。有关这些参数的可能值的信息,请参阅《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》中的 TextArea 类。

每个 TextArea 实例的实时预览反映在创作过程中对“属性”检查器或“组件”检查器中的参数所做的更改。如果需要滚动条,它会出现在实时预览中,但并不起作用。在实时预览中,文本是不可选定的,并且无法在舞台上的组件实例中输入文本。

您可以编写 ActionScript,通过利用 TextArea 组件的属性、方法和事件来控制该组件的这些选项以及其它选项。有关详细信息,请参阅《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》中的 TextArea 类。

创建具有 TextArea 组件的应用程序

以下过程解释了如何在创作时将 TextArea 组件添加到应用程序。该示例在 TextArea 实例上设置了一个 focusOut 事件处理函数,用来验证用户在将焦点移到界面其它部分前是否在文本区域中键入了内容。

  1. 创建一个新的 Flash 文档 (ActionScript 3.0)。

  2. 将一个 TextArea 组件从“组件”面板拖到舞台上,并为其指定实例名称 aTa。使其参数保留默认设置。

  3. 将第二个 TextArea 组件从“组件”面板拖到舞台上,放在第一个组件的下方,并为其指定实例名称 bTa。使其参数保留默认设置。

  4. 打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码:

    import flash.events.FocusEvent; 
     
    aTa.restrict = "a-z,'\" \""; 
    aTa.addEventListener(Event.CHANGE,changeHandler); 
    aTa.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, k_m_fHandler); 
    aTa.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, k_m_fHandler); 
     
    function changeHandler(ch_evt:Event):void { 
        bTa.text = aTa.text; 
    } 
    function k_m_fHandler(kmf_event:FocusEvent):void { 
        kmf_event.preventDefault(); 
    }

    此示例将可在 aTa 文本区域中输入的字符限制为小写字符、逗号、撇号和空格。它还在 aTa 文本区域上设置了 changeKEY_FOCUS_CHANGEMOUSE_FOCUS_CHANGE 事件的事件处理函数。changeHandler() 函数对每个 change 事件都将 aTa.text 赋给 bTa.text,从而使在 aTa 文本区域中输入的文本自动出现在 bTa 文本区域中。KEY_FOCUS_CHANGEMOUSE_FOCUS_CHANGE 事件的 k_m_fHandler() 函数防止您不输入任何文本就按 Tab 键移到下一个字段。它通过防止默认行为来实现此目的。

  5. 选择“控制”>“测试影片”。

    如果不输入任何文本就按 Tab 键将焦点移到第二个文本区域,则会显示一条错误消息,且焦点应当回到第一个文本区域。当您在第一个文本区域中输入文本时,可以看到这些文本同时也出现在第二个文本区域中。

使用 ActionScript 创建 TextArea 实例

下面的示例使用 ActionScript 创建一个 TextArea 组件。它将 condenseWhite 属性 (property) 设置为 true 以压缩空白,并将文本赋给 htmlText 属性 (property) 以利用 HTML 文本的格式设置属性 (attribute)。

  1. 创建一个新的 Flash (ActionScript 3.0) 文档。

  2. 将 TextArea 组件拖到“库”面板中。

  3. 打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码:

    import fl.controls.TextArea; 
     
    var aTa:TextArea = new TextArea(); 
     
    aTa.move(100,100); 
    aTa.setSize(200, 200); 
    aTa.condenseWhite = true; 
    aTa.htmlText = '<b>Lorem ipsum dolor</b> sit amet, consectetuer adipiscing elit. <u>Vivamus quis nisl vel tortor nonummy vulputate.</u> Quisque sit amet eros sed purus euismod tempor. Morbi tempor. <font color="#FF0000">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.</font> Curabitur diam. Suspendisse at purus in ipsum volutpat viverra. Nulla pellentesque libero id libero.';  
    addChild(aTa);

    此示例使用 htmlText 属性 (property) 将 HTML 粗体和下划线属性 (attribute) 应用于文本块,并将其显示在 a_ta 文本区域中。该示例还将 condenseWhite 属性设置为 true,以压缩文本块中的空白。setSize() 方法用于设置文本区域的高和宽,move() 方法用于设置文本区域的位置。addChild() 方法用于将 TextArea 实例添加到舞台上。

  4. 选择“控制”>“测试影片”。