跳转到内容

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

« 上一步    下一步 »
华夏公益教科书