Flash中的数组,就是维护在一个变量下的一组数据。假设你在一张纸上列出一个购买清单,然后在清单上从0开始编号,输入每一个你要购买的东西。
这张清单就是你的数组变量。你需要购买的东西叫做变量值。在flash中,上面这个情况可以用下面这句代码来表示:
grocery = ["bananas", "milk", "rice", "lemons"];
你可以从一个数组进入属于它的每一个元素,数组里的每一个元素都被赋予了一个从0开始的编号。在上面这个例子中,bananas的值是0,milk是1,rice的值是2。
声明一个数组
声明一个数组有几种方法。最简单的方法,就是采用下面这种格式:
variable = ["item0", "item1", "item2"];
如果,你曾经使用过其他的编程语言,你将注意到flash对很多东西都补挑,比如数据何时被加入数组,被加入的数组是什么类型,以及数组的初始长度等。
显示一个数组
复制并粘贴下面这行代码到一个帧里面,然后按Ctrl+Enter键:
grocery = ["bananas", "oranges", "apples", "kiwis"];
trace(grocery);
你会发现你的数组里的数据被显示出来了。如果,数组里的数据很多,你可以只显示数组里的单一的某个元素。前面已经提到,数组里的元素都会从0开始被按1递增的编上一个号。
比如,我们要显示数组的第一个元素,只要把上面的代码中的
trace(grocery); 修改成trace(grocery[0]);
“bananas”就会被显示出来。
如果要显示第二个元素,敲入:
trace(grocery[1]);
你可以通过增加这个索引值,来访问数组中的下一个元素,但是这个索引值不要超过数组中的元素数量。比如,你的数组里有4个元素,如果你用grocery[5]和grocery[4]都会得到一个"undefined"的结果。记住,数组的索引是从0开始的,4的下标实际访问的是一个数组的第5个元素。
在数组尾部添加一个元素
很多情况下,你可能会发现你数组里的元素不够用了。你的“清单”需要更多的内容,有几种方式可以给你的数组添加元素:
其一,你可以直接通过编号给数组赋值。比如,你要给一个拥有4个元素的数组,增加一个元素“potatoes”,你可以这样写:
grocery[4] = "potatoes";
trace(grocery);
这样,potatoes就被加入到这个数组中下标4的位置。当一个元素被加入到数组中的时候,会一直保留在这个数组中,除非你告诉flash,你还要删除他。我们稍后会再提到如何删除数组元素。
更好的方法当然是利用数组的length属性,取得数组的长度。一旦取得数组的长度,你不用手动指定编号,就可以直接给数组添加一个元素到数组尾部了。代码如下:
i = grocery.length;
grocery[i]="butter";
trace(grocery);
在上面的代码中,变量i取得了grocery数组的长度,第二行中,这个长度值被设置为数组新元素的编号。
注意,length属性,只是返回数组里的元素个数,而且,并不是从0开始,而是从1开始。因此,长度值往往等于数组的最后一个元素编号加1。
替换数组元素
替换你数组里的元素非常的简单。如果你对你清单里的第二个元素不太满意,你准备替换成其他物品,可以用如下代码:
grocery[1]="tangerines"; //橘子
trace(grocery);
第二个元素,就是编号为1的元素,就被值tangerines替换掉了。
上面这些是对数组的基本操作,为了让你更好的理解,我们把上面的都合起来。把下面的代码复制到一个帧的代码区中,然后按Ctrl+Enter。
grocery = ["bananas", "oranges", "apples", "kiwis"];
trace(grocery);
grocery[4] = "potatoes";
trace(grocery);
i = grocery.length;
grocery[i]="butter";
trace(grocery);
grocery[1]="tangerines";
trace(grocery);
下面我们介绍数组的一些更高级的操作:
把两个数组合并成一个数组
Flash允许你把两个数组合并成一个数组。比如下面两个数组:
colors = ["blue", "yellow", "green"];
shape = ["square", "triangle", "circle"];
我们可以把这两个数组通过concat()函数合成一个。如果我们要把colors和shape合成一个新的数组drawing,可以用如下代码:
drawing = colors.concat(shape);
这时,drawing数组的内容就变成了:
square,triangle,circle,blue,yellow,green
可以看到,colors数组里的元素排在前面,shape数组里的内容紧紧的跟在后面。
利用slice()创建一个数组
之前我们利用concat()函数,把两个数组合成了一个数组,slice的功能与之相反。slice()通过从其他数组中提取出一段数据来创建数组。
比如,看下面这个数组:
countries = ["germany", "italy", "norway", "finland", "united states", "india"]
我们可以用如下代码来提取元素:
country2 = countries.slice(2,4);
这行代码将提取数组中的从开始索引处得元素到的到索引4的元素,但是不包括索引4的元素。代码执行完后,country2数组,将会包含两个元素norway和finland,分别是countries得第二和第三个元素。
[注意:]
当你使用slice()或者concat()的时候,并不会影响所操作的原数组的值,每次修改都会创建一个新的数组。
Pop 和 Push
本教程最后要介绍的四个函数是 pop(), push(), shift(), unshift()。
Pop:
这个方法将移除一个数组的最后一个元素。当该元素被移除的时候,你可以将它赋到一个变量中。如下:
seasons = ["summer", "winter", "spring", "autumn"];
capture = seasons.pop();
trace(capture);
trace(seasons);
上面这段代码中,pop函数将seasons的最后一个元素autumn删除,并且保存到capture变量中。如果,你并不想取得最后这个元素的值,也直接使用seasons.pop()来移除seasons的最后一个元素。
Push:
push函数,添加一个或者几个元素到当前的数组。比如:
programs = ["Flash MX", "FireWorks MX"];
programs.push("DreamWeaver MX", "FreeHand MX");
trace(programs);
原数组只有两个元素,执行完push以后,push参数里的两个元素将被加到programs数组尾部。
(本文由精品闪客论坛(
http://www.flashbbs.org)翻译,如需转载,请注明转载信息,谢谢)
Shift 和 Unshift
这两个函数和上面的pop和push非常的像。基本的区别是shift和unshift处理的是数组的头部,也就是索引为0的位置。记住,pop和push操作的是数组的尾部。
Shift:
如果,想从一个数组头部,删除一个元素,只要用
programs.shift();就可以了。
当然,如果你想保存被删掉的那个变量的话,只要把函数的执行结果赋给一个变量就可以了。
unshift:
这个函数让你添加一个或者几个值到数组的前端。比如,如果你想在数组前端添加两个元素,代码如下:
programs.unshift("Director MX", "Contribute");
unshift不会覆盖你现在数组里的已有元素。