现在开始学习ActionScript编程的基础知识,学习ActionScript程序的一些基本结构。通过这一节的学习,我们要从开始就养成正确阅读和书写ActionScript程序的习惯。
首先,我们一起来看一段定义在一个按钮上的小程序:
on (release) {
var myNumber = 7;
var myString = "Flash MX 2004 ActionScript";
for (var i = 0; i<myNumber; i++) {
trace(i);
if (i+3 == 8) {
trace(myString);
}
}
}
我们发现ActionScript程序其实就是由一些命令、数字和一些符号组成,是不是不难呢?当你测试包含以上小程序的影片时,单击按钮,就可以看到这段小程序的输出效果,如图6-2-1所示。
图6-2-1 程序运行情况
有了初步的认识,下面我们来学一些基本的概念。
1.常量
常量就是一种属性,是指在程序运行中不会改变的量。例如上面程序代码中的数值3、7、8和字符串“Flash MX 2004 ActionScript”都是常量。逻辑常量True和False在编程的时候也会经常用到。
2.变量
顾名思义,变量就是程序运行中可以改变的量。例如上面例子中的i,就是变量,它从0一直变到6。可以看出,我们在编写程序时往往需要存储很多的信息,就需要变量来存储这些信息。
Variables(变量):存储了任意数据类型值的标识符。
变量实际上就是一个信息容器。容器本身总是相同的,但是容器中的内容却可以修改。通过在电影播放时修改变量中的值,然后判断某些条件的真假等。例如,如果需要重复执行10次相同的命令,你就可以对命令的执行次数进行记数,判断次数是否满10,满10次就终止。
变量可以存放任何数据类型,包括数字值(如:myNumber)、字符串值(如:myString)、逻辑值、对象或电影剪辑等。
存储在变量中的信息类型也很丰富,包括:URL、地址、用户名、数学运算结果、事件发生的次数或按钮是否被单击等。
变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下示例中,等号左边的是变量标识符,右边的则是赋予变量的值。
x=5;
name=“Lolo”;
customer.address=“66 7th Street”;
c=new Color(mcinstanceName);
变量由两部分构成:变量名和变量的值。
下面我们来看看变量如何使用:
(1)变量命名与规则
变量名必须符合以下原则:
u 变量的名称必须以英文字母开头。
u 变量的名称中间不能有空格,像box sum这个就是一个错误的示范。如果想用两个单词以上的单字来命名变量,可以在名称中间加上下划线符号,如:box_sum。
u 变量的名称中不能使用除了“_”(下划线)以外的符号。
u 不能使用与命令(关键字)相同的名称,例如,“var”、“new”等,以免程序出现错误。
u 变量的名称最好能达到“见名知意”的效果,尽量使用有意义的名称,而避免使用诸如a_1、x、z001之类意义不明的名称。
(2)变量的类型
变量的类型包括存储数值、字符串或其他数据类型。
在Flash中,可以不直接定义变量的数据类型。当变量被赋值时,Flash自动确定变量的数据类型。例如:
x=3;
在表达式x=3中,Flash将取得运算符右边的值,确定它是数值类型。此后的赋值语句又可能改变x的类型。例如,x=“hello”语句可以将x的数据类型改为字符串值。没有赋值的变量,其数据类型为undefined。
ActionScript会在表达式需要时自动转换数据类型。例如,当我们将一个值传递给Trace动作时,Trace会自动将其值改变为字符串并发送到【输出】面板。在包含运算符的表达式中,ActionScript会在需要时转换数据类型。例如,在和字符串连用时,加号(+)运算符会将其他运算项也转换成字符串。
Next in line,“number”+7
ActionScript将数字7转换为字符串“7”,然后添加到第一个字符串的末尾,得到的结果是以下字符串:
“Next in line,number7”
在调试脚本时,确定表达式或变量的数据类型是常用的手段。使用Typeof运算符就可以做到这一点。例如:
Trace(Typcof(VariableNema));
使用Number函数,可以把字符串转换为数字值。
使用String函数,可以把数字值转换为字符串值。
(3)变量的作用域
所谓变量的作用域,是指能够识别和引用该变量的区域。也就是变量在什么范围内是可以访问的。在ActionScript中有3种类型的变量区域:
本地(局部)变量:在自身代码块中有效的变量(在大括号内)。就是在声明它的语句块内(例如一个函数体)是可访问的变量,通常是为避免冲突和节省内存占用而使用。
时间轴变量:可以在使用目标路径指定的任何时间轴内有效。时间线范围变量声明后,在声明它的整个层级(Level)的时间线内它是可访问的。
全局变量:即使没有使用目标路径指定,也可以在任何时间轴内有效。就是在整个 Movie 中都可以访问的变量
注意它们的区别:全局变量可以在整个Movie中共享;局部变量只在它所在的代码块(大括号之间)中有效。