跳轉到內容

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。

« 上一步    下一步 »

華夏公益教科書