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”是一个内置的字符串变量,它保存运行影片的操作系统的名称和版本。