在FLASH 5中创建数组的方法

      工作::思变 2005-1-18 14:27
 可能你在FLASH4 中已经厌倦了过多的键盘敲入,而且你可能极力在寻找能不能使用一个数组来避免过多的键盘敲入,但在FLASH 5之前的版本中,设计人员只能使用键盘键入以下的内容:

var1 = "timmy";
var2 = "heather";
var3 = "michelle";

  以上的这些本来是可以利用数组来实现的。是的,在FLASH5 中你不仅可以使用一维数组而且还可以使用多维数组,在本教程中还将逐一介绍。
好吧,言归正转,让我们开始本教程的学习吧。
简单介绍数组

  首先,让我们一起学习一下数组的概述,因为许多Flash 的ActionScripters(动作手稿程序设计者)并不熟悉使用数组。实际上一个数组就是一个容器。它可以包含许多元素,而且每一个元素都有自己的数值,这里的元素是通过下标来索引的,就象一些高级程序设计语言(如C、Fortran等等)一样。值得指出的是,Flash数组的索引是从零开始的,即基于零的。也就是说你创建的数组数组中的第一个元素的索引为零,这跟C语言是一样的。比如,如果你有一个数组名字为“friends”,该数组里面的各个元素为你的朋友的名字,你可以在FLASH中创建以下的friends数组,如图1:
friends = new Array("timmy", "heather", "michelle", "bob");



(图1)

  现在,如果你想取出该数组的第一个元素,并且将它存放在一个变量中,你可以如图2这样使用:

the_first_name_i_want = friends[0];



(图2)

  现在你可能会注意到数组的索引是0,而不是1。这就是我刚才提到的Flash中数组是基于零的,这样你的数组的第一个元素就处于第0个位置,如果你不相信的话,你可以键入以下语句看一看:

trace(friends[0]);

  在你的Script Winodw(手稿程序窗口)中按下快捷键CTRL+ENTER来测试一下你的手稿程序。如果你是按照上面的方式创建数组并使用上面?quot;trace"命令,你应该可以在你的输出窗口中看到“timmy”。相同的道理,你可以对friends数组赋值:friends[1] = "heather",,friends[2] = "michelle" ,friends[3] = "bob"。你现在可以进一步体会到索引是从0开始的,然后是1,2,3.....


实现数组

  数组中一件重要的事情是它可以保存许多相关的信息。但是信息是否有用要看你是怎么来使用它的。让我们再次看看我们刚才所创建的friends数组。如果你要打印处所有的friends数组的所有元素,你可能不知道它究竟有多少个元素?值得庆幸的是,数组对象有了固有的属性和方法。在下面的本教程中,我们将一起学习以下内容:

  .计算数组中到底有多少个元素;
  .在从第一元素开始使用;
  .循环使用数组;
  .打印出每一个元素的数值;
  .将元素索引移动到下一个;
  .重复循环。

  下面让我们将上面的表述转变成Actionscript。因为在FLASH中数组的一个固有的属性是数组的长度。这个长度告诉你在数组中到底有多少个元素。比如 ,如果你输入以下语句:

how_big = friends.length;
trace(how_big);

  它的输出将是4。这里值得提醒的是当我们说数组长度的时候,它等于数组的最大的索引的值加1。
至此你已经可以知道数组长度的属性。所以我们可以使用for循环打印出数组中所有元素。如图3所示先创建如下的代码,循环的内容等一下在输入:

for(i=0; i<friends.length; i++) {
we'll be putting stuff here in a minute...
}





(图3)

  让我们仔细观察一下上面语句的意思。你可以第一句是使用了For循环,它的语法是for(init; condition; next),这里init是初始值,condition是条件判断,next是下个值。在本例子中循环变量是“i”,它的初始值维0,也就是从数组的第一个元素(在friends数组中即为“timmy”)开始。而"i<friends.length;"是一个条件判断语句。这个判断语句决定是否继续循环。在For循环的这个条件总是在每个循环开始之前被执行。在本例子中,For循环将不停执行,直到变量“i”的数值大于等于我们的数组的长度。这里值得注意的是,最重要的是注意不要使你For循环中的条件部分总是不会得到“false”(假),如果使这样的话,就将陷入死循环。For语句中的第三部分使用了"i++",“++”操作符是一个自增的作用,也就是说当每进行一次循环,变量“i”就自增1。当然你也可以使用这样的语句:"i = i + 1"来进行替代。其实作用是完全一样的。



实现数组


  现在该是在For循环语句中加入执行打印所有friends数组中元素的代码的时候了:

for(i=0; i<friends.length; i++) {
trace("friends[" add i add "] = " add friends[i]);
}




(图4)

  一旦,我们使用了"trace"语句来输出数组的所有元素。“trace”语句的第一部分trace("friends[" add i add "] = "只是创建以下的字符串:"friends[0] = ", "friends[1] = ", "friends[2] = " 和 "friends[3] = ",这是为了用于调试的目的,这样我们就可以知道哪个元素我们输出了。因为我们使用了变量“i”,而且在每一次的循环后变量“i”就自加1,所有变量“i”为我们作好了所有的工作。“trace”语句的第二部分是在每次的循环中计算friends[i]元素的值(这里变量"i"是从0开始并在每次循环后自加1,知道大于等于Friends数组的长度4),然后将这些数值一起放置到我们的字符串中。
好了,上面的解释已经很充分了,若是还不明白的话,可以再仔细看看上面的内容。
以上的For 循环可以输出以下的内容:

friends[0] = timmy
friends[1] = heather
friends[2] = michelle
friends[3] = bob

  现在我们对本教程作个总结:我们先创建一个数组Friends,并赋值;再将Friends数组的长度存储在临时变量how_big中。接着创建一个变量“i”来作为循环变量。最后利用For 循环打印出Friends数组的所有元素。所有的代码如下:

friends = new Array("timmy", "heather", "michelle", "bob");
the_first_name_i_want = friends[0];
trace(friends[0]);
how_big = friends.length;
trace(how_big);
for(i=0; i<friends.length; i++) {
trace("friends[" add i add "] = " add friends[i]);
}


www.it023.com/software/design/web_design/flash/2004-03-23/1080029994d7185.html
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}