跳转到内容

ActionScript 编程/第一部分/第三章/数组

来自维基教科书,开放的书籍,为一个开放的世界

数据类型

[编辑 | 编辑源代码]

数组几乎是最有用的数据类型之一。这种数据类型被设计用于保存不只是一个,而是多个值。例如,你想在变量中保存 10 个用户的姓名。所以你必须用不同的名字声明 10 个变量。添加另一个用户对你来说会很困难。但是使用数组,你只需要声明一个变量,并在其中保存所有 10 个用户的姓名。现在我们将学习如何使用数组及其方法。

 var users:Array = new Array();
 var users:Array = new Array(10);
 var users:Array = new Array("a", "b", "c", "d", "e");

上面的例子向你展示了数组的使用。第一行只是声明了一个名为“users”的数组。第二行声明了一个包含 10 个元素的数组。这意味着该数组可以在索引 0 到 9 中保存 10 个值。数组中的第一个元素总是 0。第三行声明了一个数组,并设置了其前 5 个元素的值。“c” 将是该数组中索引为 2 的元素,因为正如我们已经说过的,数组中第一个元素的索引总是 0。现在让我们编写一个小的程序来更好地理解数组。将下面编写的代码写入帧 1 的操作中。

 1.   var users:Array = new Array(3);
 2.
 3.   users[0] = "User 1";
 4.   users[1] = "User 2";
 5.   users[2] = "User 3";
 6.   
 8.   trace(users[0]);
 9.   trace(users[1]);
 10.  trace(users[2]);


在第一行,我们声明了包含 3 个元素的数组“users”。在第 3-5 行,我们设置了“users”的每个元素。如果你有一个数组,并且你想获取或设置它的任何元素,那么你必须写数组的名称,然后写“[]”,并在引号(“[]”)中写元素的编号。例如,在第 3 行,我们将“users”的第一个元素设置为“User 1”。你可以使用数组来存储它们中的任何数据。例如,你有一个只包含 2 个元素的数组。你可以将第一个元素的值设置为字符串(例如 myArray[0] = “hello”),将第二个元素设置为数字(例如 myArray[1] = 5)。最后,在第 8-11 行,我们跟踪了我们的“users”数组。现在我们将创建一个更复杂的例子。请按照以下步骤操作

步骤 1

从工具箱中选择文本工具 并绘制文本。然后选择它,在属性窗口中将其宽度设置为 80,高度设置为 25,字体大小设置为 20,并将文本类型更改为“静态文本”。在其中输入“数字:”。

步骤 2

从工具箱中选择文本工具 并绘制文本。然后选择它,在属性窗口中将其宽度设置为 30,高度设置为 25,字体大小设置为 20,var 为“input”,将文本类型更改为“输入文本”,并选中“在文本周围显示边框”按钮 。将此文本放置在先前文本附近。这将是我们的输入字段。

步骤 3

从工具箱中选择文本工具 并绘制文本。然后选择它,在属性窗口中将其宽度设置为 110,高度设置为 25,字体大小设置为 20,var 为“output”,并将文本类型更改为“动态文本”。将此文本放置在前面两个标签的下方。场景必须像这样。

步骤 4

将填充颜色设置为绿色,描边颜色设置为黑色。然后从工具箱中选择矩形工具 ,在选项窗口中单击“圆角矩形半径”按钮 ,将“圆角半径”设置为 5,按确定并绘制一个矩形。双击你绘制的矩形,并将它的宽度设置为 35,高度设置为 25。从工具箱中选择文本工具 并绘制文本。然后选择它,在属性窗口中将其宽度设置为 25,高度设置为 18,字体大小设置为 13,颜色设置为红色,并将文本类型更改为“静态文本”。在其中输入“确定”,并将其放置在矩形的中心。现在选择整个矩形和该文本(通过拖动鼠标),并将它们转换为按钮。在“转换为符号”对话框中,将按钮的名称设置为“button”,然后按确定。选择你创建的按钮,将其放置在输入文本附近,在属性窗口中将其名称设置为“btnOK”。场景必须像这样。

步骤 5

这对于我们的设计已经足够了。现在打开帧 1 的操作,并在脚本窗格中输入以下内容

 1.   var users:Array = new Array(4);
 2.   
 3.   users[0] = "John";
 4.   users[1] = "Amy";
 5.   users[2] = "Smith";
 6.   users[3] = "Jane";


然后右键单击“btnOK”,选择“操作”以查看它的操作。在脚本窗格中输入以下内容

 1.   on (release) {
 2.      output = users[input];	
 3.   }

我认为你已经理解了一切。代码的第一部分与前面的例子几乎相同,在代码的第二部分,我们编写了一段代码,该代码必须在用户单击我们的“btnOK”时执行。在第 1 和 3 行中,写了“释放”事件的开始和结束,在第 2 行中,我们编写了“users”数组的元素,用户输入的“input”是用户在输入文本中输入的文本,“output”是写入数组元素的动态文本。数组也可以是多维的。例如,你有一些用户,以及他们的电话号码和地址。为了不创建 3 个不同的数组,创建一个多维数组更容易。下面的例子展示了如何做到这一点。

 1.   var users:Array = new Array(["User1","Phone1","Address1"],
 2.                         ["User2","Phone2","Address2"],	
 3.                         ["User3","Phone3","Address3"]);
 4.   Trace(Name:  + users[0][0]);
 5.   Trace(Phone:  + users[0][1]);
 6.   Trace("Address: " + users[0][2]);
 7.   Trace("Name: " + users[1][0]);
 8.   Trace("Phone: " + users[1][1]);
 9.   Trace("Address: " + users[1][2]);
 10.  Trace("Name: " + users[2][0]);
 11.  Trace("Phone: " + users[2][1]);
 12.  Trace("Address: " + users[2][2]);

在第 1 到 3 行,我们创建了一个多维数组“users”。你可以将所有这些行写在一行中。变量在三行中声明,因为这样更容易阅读。如果你将这些行合并,那么结果将是一行很长的代码。为什么我们不在每行之后加“;”?因为第 2 和 3 行是主行的其他部分。所以在第 3 行中添加“;”就是告诉计算机这是代码的结尾。程序会认为这只是一行代码。现在让我们了解如何创建多维数组。这是编写多维数组的类型

var <array name>:Array = new Array( [ <first array>, <second array>, <…> );

当你写“var myarray = new Array( [], [], [] );”时,你创建了一个包含 3 个子数组的数组。想象一下这样的东西

  • Myarray
    • 0
    • 1
    • 2

如果你写“var myarray:Array = new Array ( [ [], [] ], [], [ [] ] );”,那么这就像这样

  • myarray
    • 0
      • 0
      • 1
    • 1
    • 2
      • 0

这就像有一个文件夹,其中有三个文件夹。在第一个文件夹中,有两个文件夹,在第三个文件夹中,有一个文件夹。所以如果你想从第一个文件夹的第二个文件夹中获取值,那么你必须写“myarray[0][1]”。在我们的例子中,我们也做同样的事情。如果我们绘制数组的结构,那么它将是

  • users
    • 0
      • 0
        • User1
      • 1
        • Phone1
      • 2
        • Address1
    • 1
      • 0
        • User2
      • 1
        • Phone2
      • 2
        • Address2
    • 2
      • 0
        • User3
      • 1
        • Phone3
      • 2
        • Address3

在这个结构中,你看到文件夹上的名称只是数字。你也可以通过编写以下内容来为它们命名

 1.   var users:Array = new Array( { name: "U1", phone: "P1", address: "A1"},
 2.                          { name: "U2", phone: "P2", address: "A2"},
 3.                          { name: "U3", phone: "P3", address: "A3"} );
 4.   trace("Name: " + users[0]["name"]);
 5.   trace("Phone: " + users[0]["phone"]);
 6.   trace("Address: " + users[0]["address"]);
 7.   trace("Name: " + users[1]["name"]);
 8.   trace("Phone: " + users[1]["phone"]);
 9.   trace("Address: " + users[1]["address"]);
 10.  trace("Name: " + users[2]["name"]);
 11.  trace("Phone: " + users[2]["phone"]);
 12.  trace("Address: " + users[2]["address"]);
</synatxhighlight>

In the previous example we used [ ] for making new arrays. But if you want to give names to arrays you must use { } instead of [ ]. If we were writing values after [] then now we must first write the name of the folder without quotes (“”) then put :  after the name and write the value in the quotes. If you want to add more values then you must put , and do the same. But if you give names to the arrays you must get their value also by using their names. If we make the structure of this example then it will be:

*	Users
**	0
***	name
****	U1
***	phone
****	P1
***	address
****	A1
**	1
***	name
****	U2
***	phone
****	P2
***	address
****	A2
**	2
***	name
****	U3
***	phone
****	P3
***	address
****	A3

==== Properties ====

{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
!Property || Description
|-
|Array.length || returns length of the array
|}

===== Length =====

This property returns the length of the specified array. The following code illustrates the use of property Length:
<syntaxhighlight lang=actionscript>
 1.   var tmpArray:Array = new Array("a", "b", "c");
 2.   trace(tmpArray.length);

输出是 3。

« 上一步    下一步 »

华夏公益教科书