Flash MX2004入门与进阶实例:6.2 变量、函数与语法规范Flash MX2004入门与进阶实例:6.2 变量、函数与语法规范(
Flash)
Flash MX2004入门与进阶实例:6.2 变量、函数与语法规范
第六章 动作脚本入门
第二节 变量、函数与语法规范(1)
现在开始学习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中共享;局部变量只在它所在的代码块(大括号之间)中有效。
[1] [2] [3] 下一页
第六章 动作脚本入门
第二节 变量、函数与语法规范(2)
(4)声明和使用变量
使用变量前,最好使用var命令先加以声明。在声明变量的时候,一般要注意以下内容:
u 要声明常规变量,可使用Set Varible动作或赋值运算符(=),这两种方法获得的结果是一样的。
u 要声明本地变量,可以在函数主体内使用var语句。
例如:
var myNumber = 7;
var myString = "Flash MX 2004 ActionScript";
u 要声明全局变量,可以在变量名前面使用_global标识符。
例如:_global. myName = "Global";
u 要测试变量的值,可以使用trace动作将变量的值发送到输出窗口。
例如:
trace(i)
trace(myString)
就可以将变量i的值发送到测试模式的输出窗口中。也可以在测试模式的调试器中检查和设置变量值。
如果要在表达式中使用变量,则必须先声明该变量。如果使用了一个未声明的变量,则变量的值将是mdenned,脚本也将产生错误。
例如:
getURL(myWebSite);
myWebSite="http://bbs.Flasher123.com/";
这段程序代码没有在使用变量myWebSite前声明它,结果就会出现问题。所以声明变量mywebSite的语句必须首先出现,只有这样,getURL动作中的变量才能被替换。
在脚本中,变量的值可以多次修改。在以下示例中,变量x被设置为15,在第2行中,该值被复制到变量y中,在第3行中,变量x的值被修改为30,但是变量y的值仍然保持为15,这是因为变量y不是引用了变量x的值,而是接受了在第2行传递的实际值15。
var x=15;
var y=x;
var x=30;
3.函数
函数(function)是什么呢?函数就是在程序中可以重复使用的代码,你可以将需要处理的值或对象通过参数的形式传递给函数,然后由函数得到结果,从另一个角度说,函数存在目的就是为了简化编程的负担,减小代码量和提高效率。
(1) 系统函数
所谓系统函数,就是Flash内置的函数,用户在编写程序的时候可以直接拿来使用。下面是一些常用的系统函数。
Boolean:转换函数,将参数转换为布尔类型。
GetVersion:函数获取Flash play的版本号。
ParseInt:数学函数,将字符串分析为整数。
Escape:将参数转换为字符串,并以URL编码格式进行编码,在这种格式中,将所有非字母数字的字符都转义为%十六进制序列。
IsFinite:数学函数,测试某数字是否为有限数。
String:将数字转换为字符串类型。
Eval:函数返回由表达式指定和变量的值。
IsNN:数学函数,测试某数字是否为NaN(不是一个数字)。
TargetPath:返回指定电影剪辑的目标路径字符串。
Getproperty:返回指定电影剪辑的属性。
Number:转换函数,将参数转换为数据类型。
Unescape:对URL编码的参数进行解码所得到的字符串。
GetTimer:影片开始播放以来经过的毫秒数。
ParseFlost:数学函数,将字符串分析为浮点数。
Object:转换函数,将参数转换为相应的对象类型。
Array:转换函数根据参数构造数组
(2)自定义函数
除了系统函数,我们在编写程序时还需要自己定义一些函数,用这些函数去完成指定的功能。在Flash中定义函数的一般形式为:
function 函数名称(参数1,参数2,……,参数n){
//函数体。即函数的程序代码
}
假设我们要定义一个计算矩形面积的函数,可以这样:
function areaOfBox(a, b) {//自定义计算矩形面积的函数
return a*b; //在这里返回结果,也就是得到函数的返回值
}
你自定义了函数以后,就可以随时调用并执行它了。调用执行函数的一般形式为:
函数名称(参数1,参数2,……,参数n);
假设程序中我们要调用上面自定义的areaOfBox()函数,可以这样:
area = areaOfBox(3, 6);
trace("area="+area);
函数就像变量一样,被附加给定义它们的电影剪辑的时间轴,必须使用目标路径才能调用它们。此外还可以使用_global标识符声明一个全局函数,全局函数可以在所有时间轴内有效,而且不必使用目标路径,这和变量很相似。
上一页 [1] [2] [3] 下一页
第六章 动作脚本入门
第二节 变量、函数与语法规范(3)4.语法规范(
1)关键字
关键字是ActionScript程序的基本构造单位,它是程序语言的保留字(Reserved Words),不能被作为其它用途(不能作为自定义的变量,函数,对象名)。
ActionScript中的关键字不是很多,如表6-2-1所示。
Flash MX 2004 ActionScript 的关键字 |
break | 跳出循环体 | instanceof | 返回对象所属的类(Class) |
case | 定义一个 switch 语句的条件选择语句块 | new | 使用构造函数(Constructor)创建一个新的对象 |
continue | 跳到循环体的下一项目 | return | 在函数中返回值 |
default | 定义 switch 语句的默认语句块 | switch | 定义一个多条件选择语句块 |
delete | 清除指定对象占用的内存资源 | this | 引用当前代码所在的对象 |
else | 定义 if 语句返回为假时的语句块 | typeof | 返回对象的类型 |
for | 定义一个循环 | var | 声明一个本地变量(Local Variable) |
function | 定义一个函数语句块 | void | 声明返回值类型不确定 |
if | 定义一个条件语句块 | while | 定义一个条件循环语句块 |
in | 在一个对象或元素数组中创建循环 | with | 定义一个对指定对象进行操作的语句块 |
表6-2-1 关键字列表
(2)运算符
运算符指定如何合并、比较或修改表达式中值的字符。也就是说通过运算来改变变量的值。
运算符所操作的元素被称为运算项@纾谝韵掠锞渲校雍牛?/SPAN>+)就是运算符,i和3就是运算项:
i + 3
运算符包括:
u 算术运算符:+(加)、*(乘)、/(除)、%(求余数)、-(减)、++(递增)、--(递减)。
u 比较运算符:<(小于)、>(大于)、<=(小于或等于)、>=(大于或等于)。
(3)逻辑运算符:&& (逻辑“和”)、|| (逻辑“或”)、! (逻辑“非”)。
下面是运算符优先级的列表,如表6-2-2所示。运算符的优先级,即几个运算符出现在同一表达式中时先运算哪一个,从上到下递减。
运算符 | 描述 |
+ | 一元(Unary)加 |
- | 一元(Unary)减 |
~ | 按位(Bitwise)逻辑非 |
! | 逻辑非(NOT) |
not | 逻辑非 (Flash 4 格式) |
++ | 后期(Post)递加 |
-- | 后期(Post)递减 |
( ) | 函数调用 |
[ ] | 数组(Array)元素 |
. | 结构(Structure)成员 |
++ | 先期(Pre)递加 |
-- | 先期(Pre)递减 |
new | 创建对象 |
delete | 删除对象 |
typeof | 获得对象类型 |
void | 返回未定义值 |
* | 乘 |
/ | 除 |
% | 求模(除法的余数) |
+ | 加 |
add | 字符串(String)连接 (过去的&) |
- | 减 |
<< | 按位左移 |
>> | 按位右移 |
>>> | 按位右移 (无符号 unsigned, 以 0 填充) |
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
lt | 小于 (字符串使用) |
le | 小于或等于 (字符串使用) |
gt | 大于 (字符串使用) |
ge | 大于或等于 (字符串使用) |
== | 等于 |
!= | 不等于 |
eq | 等于(字符串使用) |
ne | 不等于 (字符串使用) |
& | 按位(Bitwise)逻辑和(AND) |
^ | 按位逻辑异或(XOR) |
| | 按位逻辑或(OR) |
&& | 逻辑和(AND) |
and | 逻辑和 AND (Flash 4) |
|| | 逻辑或 OR |
or | 逻辑或 OR (Flash 4) |
?: | 条件 |
= | 赋值 |
*= | /= | %= | += | -= | &= | |= | ^= | <<= | >>= | >>>= | |
| 复合赋值运算 |
, | 多重运算 |
表6-2-2 运算符的优先级
(3)表达式
在ActionScript中最常见的语句就是表达式,它通常由变量名、运算符及常量组成。下面是一个简单的表达式:
x = 0;
左边是变量名(x),中间是运算符(赋值运算符 "="),右边是常量(数值 0)。由这个表达式我们可以声明(Declare)一个变量,为下一步操作做准备。
u 算术表达式
用算术运算符(加、减、乘、除)做数学运算的表达式。
例如: 2*3*4;
u 字符表达式
用字符串组成的表达式。
例如:用加号运算符“+”在处理字符运算时有特殊效果。它可以将两个字符串连在一起。
“恭喜过关,”+“Donna!”
得到的结果是“恭喜过关,Donna!”。如果相加的项目中只有一个是字符串则FIash会将另外一个项目也转换为字符串。
u 逻辑表达式
逻辑运算符就是做逻辑运算的表达式。例如:1>3,返回值为false,即1大于3为假。逻辑运算符通常用于if动作的条件判断,确定条件是否成立。
例如:
if (x == 9) {
gotoAndPlay(15);
}
这段代码的功能是,当x与9比较结果为true时就跳转到15帧并开始播放。
(4)代码书写格式
我们在编写程序代码的时候,还要注意一些代码书写的格式,一些不起眼的细节问题往往是整个程序问题的罪魁祸首。
u ActionScript 的每行语句都以分号“;”结束。长语句允许分多行书写,即允许将一条很长语句分割成两个或更多代码行,只要在结尾有个分号就行了。
u 字符串不能跨行,即两个分号必须在同一行。
u 双斜杠后面是注释,在程序中不参与执行,用于增加程序的可读性。
u ActionScript是区分大小写字母的。
上一页 [1] [2] [3]
2006-01-08 15:05:44.0