TextArea 组件是本机 ActionScript TextField 对象的包装。可以使用 TextArea 组件来显示文本,如果
editable
属性为
true
,也可以用它来编辑和接收文本输入。如果
wordWrap
属性设置为
true
,则此组件可以显示或接收多行文本,并将较长的文本行换行。可以使用
restrict
属性限制用户能输入的字符,使用
maxChars
属性指定用户能输入的最大字符数。如果文本超出了文本区域的水平或垂直边界,则会自动出现水平和垂直滚动条,除非其关联的属性
horizontalScrollPolicy
和
verticalScrollPolicy
设置为
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 组件添加到应用程序。该示例在 TextArea 实例上设置了一个
focusOut
事件处理函数,用来验证用户在将焦点移到界面其他部分前是否在文本区域中键入了内容。
-
创建一个新的 Flash 文档 (ActionScript 3.0)。
-
将一个 TextArea 组件从“组件”面板拖到舞台上,并为其指定实例名称
aTa
。使其参数保留默认设置。
-
将第二个 TextArea 组件从“组件”面板拖到舞台上,放在第一个组件的下方,并为其指定实例名称
bTa
。使其参数保留默认设置。
-
打开“动作”面板,在主时间轴中选择第 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
文本区域上设置了
change
、
KEY_FOCUS_CHANGE
和
MOUSE_FOCUS_CHANGE
事件的事件处理函数。
changeHandler()
函数对每个
change
事件都将
aTa.text
赋给
bTa.text
,从而使在
aTa
文本区域中输入的文本自动出现在
bTa
文本区域中。
KEY_FOCUS_CHANGE
和
MOUSE_FOCUS_CHANGE
事件的
k_m_fHandler()
函数防止您不输入任何文本就按 Tab 键移到下一个字段。它通过防止默认行为来实现此目的。
-
选择“控制”>“测试影片”。
如果不输入任何文本就按 Tab 键将焦点移到第二个文本区域,则会显示一条错误消息,且焦点应当回到第一个文本区域。当您在第一个文本区域中输入文本时,可以看到这些文本同时也出现在第二个文本区域中。
使用 ActionScript 创建 TextArea 实例
下面的示例使用 ActionScript 创建一个 TextArea 组件。它将
condenseWhite
属性 (property) 设置为
true
以压缩空白,并将文本赋给
htmlText
属性 (property) 以利用 HTML 文本的格式设置属性 (attribute)。
-
创建一个新的 Flash (ActionScript 3.0) 文档。
-
将 TextArea 组件拖到“库”面板中。
-
打开“动作”面板,在主时间轴中选择第 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 实例添加到舞台上。
-
选择“控制”>“测试影片”。
|
|
|