ActionScript 程式設計/第二部分/第四章
條件和迴圈不僅在 ActionScript 中,在所有程式語言中都是最重要的內容之一,因為它們無處不在。為了理解這些條件,讓我們逐個討論它們。
比較運算子
| 運算子 | 描述 |
|---|---|
|
!= |
如果兩個表示式相同,此運算子返回真,如果不相同,則返回假。如果它們的型別不同,則會進行轉換。例如,由於“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 ( <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”是一個內建的字串變數,它儲存執行影片的作業系統的名稱和版本。

