AS菜鸟教程9 字符串与输入文本的操作

Flash中的文本形式有3种,即静态文本、动态文本和输入文本。输入文本可以接受用户输入,这也是响应键盘事件的一种。输入文本是一种人机交互工具,输入文本作为变量可以被ActionScript识别。
有许多方法可以操纵String(字符串)对象,如使用运算符“+”连接字符串,使用substring和substr函数从目标字符串中截取子字符串,使用indexOf函数确定匹配字符串在目标字符串中的位置等。
9.1  输入文本
Flash中的文本形式有3种,即静态文本、动态文本和输入文本。输入文本可以接受用户输入,这也是响应键盘事件的一种。
3种形式的文本都是由文本工具 创建的,要创建输入文本,首先要使用文本工具绘制一个文本框,然后在属性面板中将该文本框的类型设置成输入文本.

在输入文本的属性面板中,除可以设置一般的文本格式外,还可以单击 按钮将文本显示为HTML格式,单击 按钮为文本添加边框,在 后面的下拉列表框中设置文本的换行格式或将文本设置成密码显示。
输入文本最重要的是变量名,如图9-2所示中的“变量”文本框,其中的myInputText即是该输入文本的变量名。输入文本变量和其他变量类似,变量的值会呈现在输入文本框中,输入文本框中的值同时也作为输入文本变量的值,它们之间是等价的。
如在场景中绘制了一个变量名为myInputText的输入文本框,然后在主时间轴的帧动作面板中添加如下ActionScript:
Key.addListener(_root);
_root.onKeyDown = function() {
trace(_root.myInputText);
};
以上脚本创建一个键盘侦听器,当按下键时即将输入文本myInputText中的内容显示在输出窗口中。测试一下您可以看到,输出窗口不会漏掉输入的每个字符,并且每输入一个字符即输出一行。
9.2  字符串
字符串是一种特殊类型的数据,对字符串可以进行多种操作。
9.2.1  连接字符串
要连接两个字符串,可以使用“+”运算符。如下所示:
var myString = ”Hello”;
myString += ” World.”;
trace(myString);
输出窗口中将输出如下所示的字符串:
Hello World.
您可以在一行ActionScript中使用多个“+”运算符,如下所示:
myStr1 = ”How”;
myStr2 = ”are”;
myStr3 = ”you”;
myStr = myStr1+” ”+myStr2+” ”+myStr3+”?”;
trace(myStr);
输出窗口中将输出如下所示的字符串:
How are you?
9.2.2  截取字符串
从字符串中可以截取它的子字符串。例如,下面的脚本从字符串中截取第5到第14个字符组成的子字符串:
myString = ”ActionScript is so useful!”;
childStr = myString.substring(4, 14);
trace(childStr);
截取字符串函数substring有两个参数,第一个参数表示要截取的字符串的开始位置,第2个参数表示要截取的字符串的结束位置。
输出窗口中输出如下所示的子字符串:
onScript i
我们要截取的子字符串是从第5个开始,为什么substring的参数中要从4开始呢?这是因为在ActionScript中,通常是从0开始计数的,即 上面的字符串中第0位上是A,第1位上是c,以此类推。那么既然从0开始计数,第14个字符就应该是第13位,为什么第2个参数不是13而是14呢?这是 因为substring的第2个参数是指要截取到的位置,即要截取的最后一个字符是它前面的一个字符,所以它应该比要截取的最后一个字符多一位。
还有一种方法可以截取字符串,这就是substr。substr与substring命令的区别在于substr的第2个参数代表要截取的子字符串的长度。如下所示的ActionScript实现与前例相同的效果:
myString = ”ActionScript is so useful!”;
childStr = myString.substr(4, 10);
trace(childStr);
在输出窗口中输出子字符串:
onScript I
还有一个特殊的截取字符串的命令charAt。charAt可以从字符串的指定位置截取一个字符,如要从前面的字符串中截取第6位上的字符S,可以使用如下所示的ActionScript:
myString = ”ActionScript is so useful!”;
childStr = myString.charAt(6);
trace(childStr);
输出窗口中将输出字符S。
9.2.3  字符串函数
String对象有很多内置函数,使您可以对字符串进行各种操作。
indexOf方法用于从目标字符串中查找另一字符串的索引,即与另一字符串相匹配的子字符串的起始位置。如下所示:
myString = ”Macromedia Flash MX”;
myStr = myString.indexOf(”Flash”, 0);
trace(myStr);
以上脚本从目标字符串“Macromedia Flash MX”中查找字符串“Flash”的位置,运行该脚本,输出窗口中输出11。
如果目标字符串中没有找到相匹配的字符串,将返回-1。
indexOf的第2个参数表示从目标字符串中开始查找的起始位置,前例中的0表示从目标字符串的第1个字符开始查找。该参数可以省略,将默认从第1个字符开始查找。
与indexOf函数相对的是lastindexOf,用它查找在参数所指定的开始位置之前的最后一个子字符串的索引,即逆序查找。如下所示:
myString = ”Macromedia Flash MX”;
myStr = myString.lastindexOf(”a”, 12);
trace(myStr);
运行该脚本,输出窗口中输出9。
如果将参数12改成13或更大的数,或将该参数省略,将返回结果13。
String对象的toLowerCase函数实现将大写字母转换为小写形式,toUpperCase函数实现将小写字母转换为大写形式。如下所示:
myString = ”Macromedia Flash MX”;
myStr1 = myString.toLowerCase();
myStr2 = myString.toUpperCase();
trace(”Original  String : ”+myString);
trace(”LowerCase String : ”+myStr1);
trace(”UpperCase String : ”+myStr2);
运行该脚本,输出窗口中显示:
Original  String : Macromedia Flash MX
LowerCase String : macromedia flash mx
UpperCase String : MACROMEDIA FLASH MX
String对象只有一个属性,即length,它表示字符串的长度,即字符串中包含字符串的个数,如下所示:
myString = ”Macromedia Flash MX”;
trace(myString.length);
运行该脚本,输出窗口中显示19,即该字符串中共19个字符。
在使用String对象的函数和属性时要注意,字母的大写形式和小写形式是有区别的,并且每个空格也作为一个字符。

Leave a Reply

You must be logged in to post a comment.