TextInput 组件是单行文本组件,是本机 ActionScript TextField 对象的包装。如果需要多行文本字段,请使用 TextArea 组件。例如,您可以在表单中将 TextInput 组件用作密码字段。您还可以设置一个侦听器,检查用户在切换到字段之外时,该字段是否有足够的字符。该侦听器可以显示一条错误信息,指明必须输入正确的字符数。
可以使用
setStyle()
方法来设置
textFormat
属性,以更改 TextInput 实例中所显示文本的样式。TextInput 组件还可以用 HTML 进行格式设置,或用作遮蔽文本的密码字段。
与 TextInput 组件的用户交互
在应用程序中,TextInput 组件可以被启用或者禁用。在禁用状态下,该组件不接收鼠标或键盘输入。当启用时,它遵循与 ActionScript TextField 对象相同的焦点、选择和导航规则。当一个 TextInput 实例有焦点时,您还可以使用以下按键来控制它:
键
|
说明
|
箭头键
|
将插入点向左或向右移动一个字符。
|
Shift+Tab
|
将焦点移到前一个对象。
|
Tab
|
将焦点移到下一个对象。
|
有关控制焦点的详细信息,请参阅
《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》
中的 FocusManager 类以及
使用 FocusManager
。
每个 TextInput 实例的实时预览反映在创作过程中对“属性”检查器或“组件”检查器中的参数所做的更改。在实时预览中,文本是不可选定的,并且无法在舞台上的组件实例中输入文本。
在将 TextInput 组件添加到应用程序时,您可以使用“辅助功能”面板来使其可由屏幕读取器访问。
创建具有 TextInput 组件的应用程序
以下过程解释了如何将 TextInput 组件添加到应用程序。此示例使用两个 TextInput 字段来接收和确认密码。它使用一个事件侦听器来查看输入的字符数是否不少于八位以及这两个字段的文本是否匹配。
-
创建一个新的 Flash (ActionScript 3.0) 文档。
-
将一个 Label 组件从“组件”面板拖到舞台上,并在“属性”检查器中为该组件输入以下值:
-
从“组件”面板将第二个 Label 组件拖到舞台上并为它分配以下值:
-
从“组件”面板将 TextInput 组件拖到舞台上并为它分配以下值:
-
从“组件”面板将另一个 TextInput 组件拖到舞台上并为它分配以下值:
-
打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码:
function tiListener(evt_obj:Event){
if(confirmTi.text != pwdTi.text || confirmTi.length < 8)
{
trace("Password is incorrect. Please reenter it.");
}
else {
trace("Your password is: " + confirmTi.text);
}
}
confirmTi.addEventListener("enter", tiListener);
此代码在名为
confirmTi
的 TextInput 实例上设置
enter
事件处理函数。如果这两个密码不匹配或者用户键入的字符数少于八位,此示例将显示消息:“密码不正确。请重新输入。”如果密码为八位或八位以上并且互相匹配,此示例将在“输出”面板中显示输入的值。
-
选择“控制”>“测试影片”。
使用 ActionScript 创建 TextInput 实例
下面的示例使用 ActionScript 创建一个 TextInput 组件。此示例还创建了一个用以提示用户输入其名字的 Label。此示例将此组件的
restrict
属性设置为只允许使用大写和小写字母、一个句点和一个空格。它还创建了一个用以设置 Label 和 TextInput 组件中文本格式的 TextFormat 对象。
-
创建一个新的 Flash (ActionScript 3.0) 文档。
-
将 TextInput 组件从“组件”面板拖到“库”面板中。
-
将 Label 组件从“组件”面板拖到“库”面板中。
-
打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码:
import fl.controls.Label;
import fl.controls.TextInput;
var nameLabel:Label = new Label();
var nameTi:TextInput = new TextInput();
var tf:TextFormat = new TextFormat();
addChild(nameLabel);
addChild(nameTi);
nameTi.restrict = "A-Z .a-z";
tf.font = "Georgia";
tf.color = 0x0000CC;
tf.size = 16;
nameLabel.text = "Name: " ;
nameLabel.setSize(50, 25);
nameLabel.move(100,100);
nameLabel.setStyle("textFormat", tf);
nameTi.move(160, 100);
nameTi.setSize(200, 25);
nameTi.setStyle("textFormat", tf);
-
选择“控制”>“测试影片”以运行此应用程序。
|
|
|