跳轉到內容

ActionScript 程式設計/第二部分/第四章

來自華夏公益教科書,開放的世界,開放的書籍

條件/迴圈(第一部分)

[編輯 | 編輯原始碼]

條件和迴圈不僅在 ActionScript 中,在所有程式語言中都是最重要的內容之一,因為它們無處不在。為了理解這些條件,讓我們逐個討論它們。

If, else if, else

[編輯 | 編輯原始碼]

“if” 用於比較兩個或多個表示式。例如,你有一個“輸入文字”和一個按鈕。你想檢查“輸入文字”的值是否等於“hello”。為此,你必須使用“if”。“if”的使用如下

 if ( <condition> ) {
    //here goes your code
 }

當您編寫的條件為真時,將執行“if”中的程式碼。但例如,您寫了一個為假的條件,並且您想知道它。在這種情況下,您可以使用“else”。

 if ( <condition> ) {
    //here goes your code
 } else {
    //here goes your code
 }

但在使用任何條件之前,您必須瞭解比較和邏輯運算子。

運算子(第二部分)

[編輯 | 編輯原始碼]

比較運算子

運算子 描述

!=

如果兩個表示式相同,此運算子返回真,如果不相同,則返回假。如果它們的型別不同,則會進行轉換。例如,由於“5”是一個字串,而 5 是一個數字,因此“5” != 5 返回假。

!==

此運算子與“!=”相同,唯一的區別是型別不會被轉換。

<

比較兩個表示式,並確定表示式 1 是否小於表示式 2。如果是,則運算子返回真

<=

比較兩個表示式,並確定表示式 1 是否小於或等於表示式 2 ; 如果是,則運算子返回真

==

此運算子檢查表示式 1 是否等於表示式 2,如果相等則返回真,如果型別不同,則會進行轉換。

===

此運算子與“==”相同,但在“===”中,型別不會被轉換。

>

比較兩個表示式,並確定表示式 1 是否大於表示式 2,如果是則返回真。

>=

比較兩個表示式,並確定表示式 1 是否大於或等於表示式 2,如果是則返回真。

邏輯運算子

運算子 描述

!

反轉變數或表示式的布林值。

&&

運算子“&&”表示“並且”。例如,您可以用它連線兩個條件。

||

運算子“||”表示“或”。它可用於連線兩個條件。

其他運算子

運算子 描述

--

此運算子從表示式中減去 1。例如,你有一個變數“a”,並且想將其值減少 1。與其寫“a-=1”或“a=a-1”,你可以寫“a--”。

?:

此運算子與“if”條件相同。以下示例將演示其工作原理
 var x = new Number(5);
 var y = new Number(10);
 var z = new Number();
 
 z = (x < y) ? x: y;
The last line means that if “x<y” then “z=x” else “z=y”. You can write the same using “if”.
 if (x < y) {
 	z = x;
 } else {
 	z = y;
 }

++

此運算子將表示式加 1。例如,你有一個變數“a”,並且想將其值增加 1。與其寫“a+=1”或“a=a+1”,你可以寫“a++”。

instanceof

稍後討論

typeof

“typeof”運算子評估表示式;結果是一個字串,指定表示式是字串、影片剪輯、物件還是函式。例如,你有一個名為“mybutton”的按鈕。如果你寫這段程式碼
trace(typeof(mybutton));

那麼追蹤到的值將是“button”。如果物件是影片剪輯,則返回值是“movieclip”,如果它是字串,則返回值是“string”。

void

稍後討論

現在,當您瞭解了這些運算子後,我們可以繼續學習條件和編寫新程式。

條件/迴圈(第二部分)

[編輯 | 編輯原始碼]

讓我們編寫一個程式來檢查兩個輸入文字的值是否相同。首先建立一個輸入文字並將其第一個變數設定為“input1”,將第二個變數設定為“input2”。然後新增一個按鈕並將其名稱設定為“button”。在“button1”的操作中新增以下幾行

 1.   on (release) {
 2.      if (input1 == input2) {
 3.         trace(YES);
 4.      } else {
 5.         trace(NO);
 6.      }
 7.   }

在第 2 行中,我們使用“if”和運算子“==”檢查 input1 是否等於 input2(注意:不要將“=”與“==”混淆,因為它們是不同的運算子。“=”將值賦給變數,而“==”只檢查兩個表示式。例如,如果你有“if”,並且你想檢查任何變數“a”是否等於“hello”,那麼你必須在條件中寫“a==”hello””。如果你寫“a=”hello””,那麼 a 將變成“hello”。)如果是,則我們跟蹤“YES”,否則我們跟蹤“NO”。但現在想象另一種情況。你有一個輸入文字和一個按鈕,當用戶在輸入文字中輸入自己的姓名並點選按鈕時,你想追蹤不同的值。要解決這個問題,你必須在按鈕中新增以下程式碼

 1.   on (release) {
 2.      if (input1 == Jane) {
 3.         trace(Hello Jane!!!);
 4.      } else if (input1 == Ben) {
 5.         trace(Hello Ben!!!);
 6.      } else if (input1 == John) {
 7.         trace(Hello John!!!);
 8.      } else {
 9.         trace(Hello unknown!!!);
 10.     }
 11.  }

如果你願意,你可以只為你自己寫一個簡單的程式。你可以建立兩個輸入文字,一個按鈕,一個動態文字(用於顯示狀態),並編寫程式碼來確定想要進入你的程式的使用者是否是會員。這個小程式將成為你的安全保障,防止其他人進入。以下是按鈕操作的片段

 1.   on (release) {
 2.      if (UserName == user1 && Password == password1) {
 3.         //here goes your code
 4.      } else if (UserName == user2 && Password == password2) {
 5.         //here goes your code
 6.      } else {
 7.         Status = Invalid Details!;
 8.      }
 9.   }

UserName 是第一個輸入文字的“var”屬性 Password 是第二個輸入文字的“var”屬性 Status 是動態文字的“var”屬性

“For”用於多次重複程式碼。以下是“For”的使用方式

 for ( <init>; <condition>; <next> ) {
    //here goes your code
 }

現在我將帶你一個需要使用“For”的例子。例如,你想將 1 到 10 的所有數字加起來(1+2+3+4+…+10)。為了做到這一點,你必須編寫以下程式碼

1.   var i = new Number();
2.   i += 1;
3.   i += 2;
4.   i += 3;
5.   i += 4;
6.   i += 5;
7.   i += 6;
8.   i += 7;
9.   i += 8;
10.  i += 9;
11.  i += 10;

(或者如果你太聰明瞭)

 1.   var i = new Number();
 2.   i = 1+2+3+4+5+6+7+8+9+10;

但是,無論如何,編寫這樣的程式碼都很無聊。相反,您可以使用“For”並將程式碼重複 10 次

 1.   var i = new Number();
 2.   for ( e = 1; e <= 10; e++) {
 3.      i += e;
 4.   }
<syntaxhighlight>

In the first line we declare i number variable. In line 2 we begin our For. e = 1 is the <init> part. In the init part you assign value to the variable. In our case we assign 1 to variable e. Now you must ask why I use the word variable with e. Because when you init the value Flash automatically makes e a number variable. If you declare e as a number variable in the beginning of the code there will be no problem. You can write the following example like this:
<syntaxhighlight lang="actionscript3">
 1.   var i = new Number();
 2.   var e = new Number();
 3.   for ( e = 1; e <= 10; e++) {
 4.      i += e;
 5.   }

“For”的第二部分 <condition> 告訴 Flash 重複操作多少次。在我們的例子中,我們寫了在 e 小於或等於 10 時重複操作。因此,當“e”變成 11 時,它將停止重複操作。在“For”的第三部分中,是 <next>,你必須告訴 Flash 每當它重複操作時如何更改變數的值。在我們的例子中,我們寫了“e++”。這意味著每次 Flash 重複操作時,它都會將 e 增加 1。在“For”的操作中(第 4 行),我們寫了“i += e;”。這意味著每次操作重複時,我們都會將“e”加到“i”中。因此,這段小程式將給出 1 到 10 的數字之和。您可以在程式碼結束時跟蹤“i”的值以檢視它的值。它必須是“55”。

 1.   var i = new Number();
 2.   var e = new Number();
 3.   for ( e = 1; e <= 10; e+=2) {
 4.      i += e;
 5.   }

此示例與前一個示例執行的操作相同,但這次我們以 2 為增量,而不是以 1 為增量,如前一個示例所示。因此,我們的示例將計算以下數字之和:“1, 3, 5, 7, 9”。

For .. In

[編輯 | 編輯原始碼]

“For .. In”用於迴圈遍歷您指定的物件的屬性或物件。以下是該語句的結構

 for ( <variableIterant> in <object> ) {
    //here goes your code
 }

現在讓我們瞭解這個語句在哪裡、如何使用。例如,如果您想獲取“_root”物件中的物件列表,您必須編寫以下程式碼

 1.   var e = new String(Hello!!!);
 2.   for (obj in _root) {
 3.      trace(obj);
 4.   }

如果在幀操作中編寫這段程式碼並執行它,則輸出值將為

程式碼的第一行宣告一個名為“e”的新字串變數。然後,程式迴圈遍歷“_root”物件中的每個元素並跟蹤其名稱。您已經知道時間軸中宣告的每個區域性變數都是“_root”物件的元素,如“e”,但什麼是“$version”?“$version”是一個內建的字串變數,它儲存執行影片的作業系統的名稱和版本。

« 上一步    下一步 »
華夏公益教科書