关键字
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.常量

常量就是一种属性,是指在程序运行中不会改变的量。例如上面程序代码中的数值378和字符串Flash MX 2004 ActionScript”都是常量。逻辑常量TrueFalse在编程的时候也会经常用到。


2.变量

顾名思义,变量就是程序运行中可以改变的量。例如上面例子中的i,就是变量,它从0一直变到6。可以看出,我们在编写程序时往往需要存储很多的信息就需要变量来存储这些信息。

Variables(变量):存储了任意数据类型值的标识符。

变量实际上就是一个信息容器。容器本身总是相同的,但是容器中的内容却可以修改。通过在电影播放时修改变量中的值,然后判断某些条件的真假等。例如,如果需要重复执行10次相同的命令,你就可以对命令的执行次数进行记数,判断次数是否满10,满10次就终止。

变量可以存放任何数据类型,包括数字值(如:myNumber)、字符串值(如:myString)、逻辑值、对象或电影剪辑等。

存储在变量中的信息类型也很丰富,包括:URL、地址、用户名、数学运算结果、事件发生的次数或按钮是否被单击等。

变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下示例中,等号左边的是变量标识符,右边的则是赋予变量的值。

x=5;

name=Lolo”;

customer.address=66 7th Street”;

c=new ColormcinstanceName);

变量由两部分构成:变量名和变量的值。

下面我们来看看变量如何使用:

1)变量命名与规则

变量名必须符合以下原则:

u       变量的名称必须以英文字母开头。

u       变量的名称中间不能有空格,像box sum这个就是一个错误的示范。如果想用两个单词以上的单字来命名变量,可以在名称中间加上下划线符号,如:box_sum

u       变量的名称中不能使用除了“_”(下划线)以外的符号。

u       不能使用与命令(关键字)相同的名称,例如,“var”、“new”等,以免程序出现错误。

u       变量的名称最好能达到“见名知意”的效果,尽量使用有意义的名称,而避免使用诸如a_1xz001之类意义不明的名称。

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 linenumber7

在调试脚本时,确定表达式或变量的数据类型是常用的手段。使用Typeof运算符就可以做到这一点。例如:

TraceTypcofVariableNema)

使用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,脚本也将产生错误。

例如:

getURLmyWebSite;

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:转换函数,将参数转换为数据类型。

UnescapeURL编码的参数进行解码所得到的字符串。

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>+)就是运算符,i3就是运算项:

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);

}

这段代码的功能是,当x9比较结果为true时就跳转到15帧并开始播放。

4)代码书写格式

我们在编写程序代码的时候,还要注意一些代码书写的格式,一些不起眼的细节问题往往是整个程序问题的罪魁祸首。

u       ActionScript 的每行语句都以分号“;”结束。长语句允许分多行书写,即允许将一条很长语句分割成两个或更多代码行,只要在结尾有个分号就行了。

u       字符串不能跨行,即两个分号必须在同一行。

u       双斜杠后面是注释,在程序中不参与执行,用于增加程序的可读性。

u       ActionScript是区分大小写字母的。

 

上一页  [1] [2] [3] 


2006-01-08 15:05:44.0