云南师范大学计算机科学与信息技术学院教育技术学——杨金平
如果变量的值等于3,执行命令3
条件总是建立在比较之上的,你可以比较两个变量的值以判断它们是否相等;或者判断一个是否大于另一个,或是小于另一个。如果变量是字符串类型,你可以比较它们按字典顺序排列时的先后次序。 3.1.4 循环
与人不同,计算机很适合做重复性的工作。一件事情仅仅重复几次就可能使人厌倦,但是让计算机重复执行成千上万次它都照样有耐心。
循环在每种编程语言中都是一个很重要的部分,ActionScript也不例外。你可以指定一条指令执行给定的次数,或者令其执行到满足指定的条件为止。
事实上,条件是循环中的重要组成部分,整个循环只需要一个开始点,一个结束点,再加上一个标志循环结束的条件。
例如,你需要循环10次,使用一个变量从0开始计数。每循环一次,计数加1。当计数变量达到10时,循环结束,程序继续执行循环以后的部分。下面的内容代表了一个标准的循环结构: (1)循环以前的命令。 (2)循环开始,计数变量置0。 (3)循环中的命令。 (4)计数变量加1。
(5)如果计数变量小于10,执行步骤(3)。 (6)循环以后的命令。
在上面的步骤中,步骤(1)只执行1次,步骤(2)表示循环的开始,步骤(3)、(4)、(5)都将执行10次,当循环结束后,执行步骤(6)及以后的部分。 3.2 ActionScript之一角
当你在编写自己的脚本时,你会用到各种各样不同的关键字和符号,为便于你熟悉脚本的构成,下面先来看一个真实的例子。
这是一段作用于按钮的脚本,当用户单击按钮时(确切地说是松开按下的按钮时)执行它。其中没有包含特殊的函数,但是它体现了ActionScript的主要结构。 on (release) { var myNumber = 7;
var myString = \for (var i=0; i if (i + 3 == 8) { trace(myString); } } } 脚本的第1行表明当用户松开按下的按钮时执行大括号中的语句。on (release)结构只能用于按钮,其他相关的几种用法如on(press)、on(rollOver)、on(rollout)、on(dragOver)、on(dragOut)等。 第1行末尾的大括号{表示一段相对独立的代码段的开始。从{到与之相对的}之间的代码是一个整体,它们都从属于按钮的release事件。 请注意,大括号之后的代码较之第1行有一个制表符(按一次Tab键)的缩进,其后的每行代码与之具有相同的缩进程度,直到一个新的大括号开始,在新大括号后的语句会比前面的语句增加一个制表符的缩进,以此类推,这种特点与其他编程语言是类似的。Flash会自动将你添加的代码设置成正确的缩进样式。 代码的第1行创建一个名为myNumber的局部变量,并将该变量的值设置为7。下面一行将字符串Flash MX ActionScript赋给另一个变量myString。稍后我们会更详细的介绍变量的两种类型:局部变量和全局变量。 17 云南师范大学计算机科学与信息技术学院教育技术学——杨金平 分号;表示一条指令的结束,在每个完整指令的末尾都应该添加分号。 for代表一个循环结构的开始,此处的循环执行7(myNumber)次,即令i从0递增到6,每递增1便执行一次循环结构中的语句。for后面大括号中的部分即为循环体。 命令trace将它后面括号中的内容发送到输出窗口。我们将在下一部分详细介绍输出窗口。 if是一种条件结构,它测试后面的内容i + 3 == 8是否为true,如果为true,则执行后面的语句;否则跳过该代码段。 if结构中只有一个trace命令,它将变量myString的值发送到输出窗口。 上例脚本以三个反向大括号}结束,第1个表示if语句的结束,第2个表示for语句的结束,第3个表示整个on(press)段结束。 3.3 输出窗口 输出窗口是只在测试Flash影片时出现的一个编程工具,Flash用它来显示出错信息或其他的一些重要信息。用户可以用ActionScript中的trace命令自定义要发送到输出窗口中的信息。 输出窗口在测试程序时非常有用。你可以使用trace命令在输出窗口中显示变量的值或者哪一部分ActionScript正在执行。 输出窗口还可以帮助你学习ActionScript。你可以编写一些小程序,将信息发送到输出窗口,这将帮助你看到程序的运行结果。 要想熟悉输出窗口,最好的方法就是多使用它。下面就来编写一段小程序,将信息发送到输出窗口。 (1)启动Flash MX。 (2)选中时间轴的第1帧,打开第1帧的动作面板。 (3)使用右上角的菜单将动作面板切换到专家模式。 (4)在脚本编辑区单击鼠标,将鼠标光标定位到脚本编辑区中。 (5)在动作面板中输入如下ActionScript: trace(\ (6)按Ctrl+Enter键测试影片,因为舞台中没有任何图像,所以你将看到一个空白窗口,同时出现一个输出窗口,窗口中显示:I like ActionScript!如图3-2所示。 输出窗口显示了trace命令中的信息 和动作面板一样,输出窗口右上角也有一个下拉菜单,其中包含了拷贝、清除、查找、保存到文件以及打印等命令。 下拉菜单的最后一项命令是“调试级别”,你可以选择“错误”、“警告”、“详细”中的一种,如果选择“无”,将不显示任何信息。 3.4 ActionScript基本语法 前面介绍了程序的基本结构,下面要讲解ActionScript中的基本语法。 3.4.1 变量 1.设置变量 在ActionScript中使用变量的方法很简单,你只需要为变量名分配一个值,例如: myVariable = 7; 该例在创建名为myVariable的变量的同时将其值设置为7,你可以为变量任意取一个名字,而并不需要使用本例中的myVariable。 可以使用输出窗口查看变量的值,如在一个空白影片第一帧的动作面板中添加如下ActionScript: x = 7; trace(x); 首先,数字7被存储在变量x中;然后,使用trace命令将变量x的值发送到输出窗口。影片播放时,输出窗口中会显示数字7。 2.全局变量 根据变量作用的范围不同可将变量分为全局变量和局部变量。 18 云南师范大学计算机科学与信息技术学院教育技术学——杨金平 全局变量就是可以作用在整个Flash影片的所有深度级别上的变量。你可以在某一帧中设置它,并在其他帧中使用和改变它的值。 你不需要使用特别的方法创建全局变量,像前一个例子一样,直接设置并使用它,它自动成为一个全局变量。 在许多编程语言中,全局变量可以在任何地方使用。Flash影片使用一个概念叫层级(level)。整修影片的主时间轴作为根(root)层级,影片剪辑是时间轴中的小影片。影片剪辑中的图形和脚本要比根层级低一个级别。影片剪辑不能直接使用根层级中的全局变量。 3.局部变量 局部变量只能存在于当前脚本中,而在其他帧中它将不再存在。你可以在使用同一个变量名在不同的帧中创建不同的局部变量,它们之间将互不影响。 局部变量可用来创建模块化的代码。当前脚本执行完时,局部变量将被从内存中删除;而全局变量将保留到影片结束。 创建局部变量需要使用关键字var。例如,下面的ActionScript创建值为15的局部变量myLocalVariable: myLocalVariable = 15; 使用var创建局部变量后,在当前代码中就不再需要使用关键字var了。例如,下面的代码创建值为20的局部变量myLocalVariable,然后将其值改为8,再发送到输出窗口中。 var myLocalVariable = 20; myLocalVariable = 8; trace(myLocalVariable); 如果没有特殊的需要,请尽量使用局部变量。 3.4.2 比较 在ActionScript中比较两个事物是很容易的,要进行比较可以使用标准的数学符号,如=、<、>等。 1.相等 在ActionScript中用比较运算符对两个值进行比较。 要比较两个值是否相等,可以使用连在一起的两个等于符号(==)。单个等于符号(=)是用来为变量分配值的,并不是比较运算符。 如果要比较变量x的值是否等于7,就可以使用==符号,如下所示: var x = 7; trace(x == 7); 以上代码使用=符号将变量x设置为7,然后使用==符号对x和7进行比较。 测试这两行代码,输出窗口将显示“true”。如果将x设置为8或其他数,则会显示“false”。 ==符号还可以用来比较两个字符串。如下所示: var myString = \trace(myString == \trace(myString == \ 程序运行时,你将在输出窗口中看到一个“true”和一个“false”,因为在字符串中字母是要区分大小写的。 如果你要比较两个值是否不等,可以使用!=符号,它的意思是“不等于”。如下所示: var a = 7; trace(a != 9); trace(a != 7); 第1个trace语句显示信息“true”,因为a确实不等于9;第2个trace语句显示信息“false”。 2.小于和大于 使用标准的数学符号<和>比较两数是否成小于或大于关系。举例如下: 19 云南师范大学计算机科学与信息技术学院教育技术学——杨金平 var a = 9; trace(a < 10); trace(a > 5); trace(a < 1); 你将从输出窗口中看到“true”、“true”和“false”。 符号<=或>=用于比较一个数是否小于等于或大于等于另一个数,如下所示: var a = 9; trace(a <= 9); trace(a >= 9); trace(a >= 7); 以上3个trace语句都将显示“true”。 3.4.3 运算 通过运算可以改变变量的值。分别使用算术运算符+、-、*、/执行加、减、乘、除操作。 如下所示的ActionScript将值为9的变量x加上一个数7: var x = 9; x = x + 7; trace(x); 运算结果为16。 在ActionScript中执行运算可以使用一些简写方法,如+=运算符将其前后的值相加并将结果赋给它前面的变量。前面的脚本也可以写成如下的形式: var x = 9; x += 7; trace(x); ++运算符与+=运算符类似,但它每执行一次,变量的值只增加1,如下面的例子: var x = 9; x++; trace(x); 结果显示10。再看下面的例子: var x = 9; trace(x++); trace(x); 结果是9和10。为什么呢?因为第1个trace语句输出x的当前值9,然后将x加1,输出x的新值10。 再试一下下面的脚本: var x = 9; trace(++x); trace(x); 这次的结果为两个10。因为将++运算符置于变量前面,将先执行运算再返回变量的值。 同理,--运算符执行递减操作,-=运算符在变量当前值的基础上减去一个数,*=运算符在变量当前值的基础上乘上一个数,/=运算符在变量当前值的基础上除以一个数。 3.4.4 条件 既然现在你已经知道如何比较两个变量,你就可以将比较结果作为执行某些语句的条件。 1.if语句 if语句使你可以使用比较结果控制Flash影片的播放。如下所示的语句判断X是否等于9,如果比较结果为true,则让影片跳到第15帧: 20