《flash 5 actionscript交互动画简明教程(上).doc》由会员分享,可在线阅读,更多相关《flash 5 actionscript交互动画简明教程(上).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Flash 5 ActionScript交互动画简明教程(上)Flash 5 ActionScript交互动画简明教程(上) Flash 5 ActionScript交互动画简明教程(上) 莫治雄 ActionScript是Flash 5的动作脚本语言。我们在网上经常见到的Flash动画有两种:简单动画和交互动画,在简单动画中,Flash按顺序播放动画中的场景和帧,用户只能“被动”观看;而在交互动画中,用户可以“主动”观看,可以使用键盘或鼠标与动画交互,这就大大增强了Flash动画的魅力。有了ActionScript,我们能创作出这种复杂的交互动画。 一、Flash 5 ActionScrip
2、t语言基础 (一)变量和数据类型 变量是存储数据的容器,数据类型说明一个变量或ActionScript元素可以存储数据的种类。由于变量可以存储不同的数据,所以变量也同样要区分不同的类型。 在Flash 5中,变量可以存储数值型、字符型、逻辑型、对象型和电影剪辑型数据。在脚本中可以给变量赋值,依据其存储的值的不同,变量可以有以下6种类型: (1)字符型(String):存储字符型数据。例如,name = 孙悟空。 (2)数值型(Number):存储数值型数据。例如,size = 100。 (3)逻辑型(Boolean):存储逻辑型数据。例如,rainning = true。 (4)对象型(Obj
3、ect):存储对象型数据。例如,myDate = new Date()。 (5)电影剪辑型(Movieclip) :存储电影剪辑型数据。例如,myClip = FishMovieclip。 (6)未定义型(Undefined):当一个变量没有赋予任何值时为未定义型。 在Flash中,给变量命名必须遵守以下规则: 变量名必须以字母或下划线开头,由字母、数字和下划线组成,中间不能包含空格。变量名不区分大小写。 变量名不能是一个关键字或逻辑常量(true 或false)。需要注意的是,Flash的关键字都是小写形式,如果写成大写,Flash把它视为普通字符而不作为关键字处理。例如for是一个关键字,
4、而FOR则不属于关键字。 变量名在它的作用范围内必须是唯一的。 例如,BOOK、a2、firstName、_YPOSITION都是合法的变量名;if、for、var、3W、gb%c都是非法变量名。 在脚本中使用变量应遵循“先定义后使用”的原则。也就是说,在脚本中必须先定义一个变量,然后才能在表达式中使用这个变量。依据变量的作用范围,可以把变量分为全局变量和局部变量。两种变量的定义方法不同。 定义全局变量,可以使用set动作或赋值操作符(=) ,两个方法的结果相同。语法格式如下: 变量名 = 表达式; set (变量名,表达式); 例如: A1 = 20; set(A1,20); 可以在定义变量
5、时给变量赋值。在上例中,在定义变量A1时给它赋值20。注意:set语句中的变量名要用引号(双引号或单引号)括起来。 定义局部变量使用var语句。语法格式如下: var 变量名; var 变量名 = 表达式; 例如: var K; var book = ActionScript; Flash 5的数据有数值型、字符型、逻辑型、对象型和电影剪辑型。 (1) 字符型 字符型数据是一个字符(字母、数字和标点符号)序列。在ActionScript语句中输入字符串,使用单引号或双引号括住。 Name = Ted; (2)数值型 数值型数据是一个双精度浮点数。可用数学运算符处理数值型数据。例如: sum =
6、 300+200; I = I+1; (3)逻辑型 逻辑型数据包括true(真)或false(假)。需要时,ActionScript 也把true和false转换为1和0。逻辑值与逻辑操作符一起,常常用在控制脚本流动的比较语句中。例如在下面的脚本中,如果password的值为true,动画播放: onClipEvent(enterFrame) if (password = true) play(); (4)对象 对象是属性的集合。每个属性都有名字和值。属性值可以是任何Flash数据类型,甚至可以是对象数据类型。这样就可以把一个对象嵌套在另一个对象之中。例如,在下面的代码中,china是一个对象
7、,guangxi也是一个对象;而nanning是guangxi的属性,guangxi又是china的属性: (5)电影剪辑 电影剪辑是一种图符,这种图符可以在Flas动画中播放一个动画片段。它是唯一一种与图像元素有关的数据类型。你也可以把电影剪辑理解为一个“小型动画”。有了电影剪辑数据类型,我们就可以使用电影剪辑对象的方法控制电影剪辑图符。使用点操作符可以调用电影剪辑的方法,例如: myClip.startDrag(true); (二)运算符和表达式 在Flash 5中,运算符有很多种类,包括数值运算符、字符串运算符、比较运算符、逻辑运算符、相等运算符、赋值运算符、 点运算符、数组访问运算符和
8、位运算符。 数值运算符就是对数值执行加、减、乘、除和其他算术运算。动作脚本语言中的数值运算符包括+(加)、-(减)、*(乘)、/(除)、%(取模)等。 需要注意的是,在Flash的ActionScript中,如果减、乘和除数值运算符的操作数中有一个是数字字符串,Flash会自动把该数字字符串转换为数值,然后执行相应的运算。例如: y = 12 - 6; /结果y = 6 y = 05 * 6; /结果y = 30 比较运算符比较表达式的值,返回逻辑值true或false。比较运算符常常用在循环和条件语句之中。动作脚本语言中的比较运算符包括=(等于)、!=(不等)、(大于) =(大于等于)等。
9、逻辑运算符比较两个逻辑值(true和false),返回结果也是逻辑值。ActionScript的逻辑运算符包括&(逻辑与)、|(逻辑或)、!(逻辑非)等。 在逻辑运算中,如果两个操作数的计算结果都是true,则逻辑与运算的返回结果为true;如果两个操作数的计算结果有一个是false,则逻辑与运算的返回结果为false。如果一个或两个操作数的运算结果是true,逻辑或运算的返回结果为true;如果两个操作数的计算结果都是false,则逻辑或运算的返回结果为false。如果操作数的计算结果是true,逻辑非运算的返回结果就是false;如果操作数的计算结果是false,逻辑非运算的返回结果就是t
10、rue。 位运算符用来处理浮点数,运算时先将操作数转化为32位的二进制数,然后对每个操作数分别按位进行运算,运算后再将二进制的结果按照Flash的数值类型返回运算结果。 ActionScript的位运算符包括 &(位与)、|(位或)、(位异或)、(位非)、(右移位)、(填0右移位)等。 赋值运算符的作用就是给变量、数组元素或对象的属性赋值。下表列出的是ActionScript的赋值运算符: (图) Flash表达式是由常量、变量、函数、属性和运算符按照运算规则组合构成的式子。表达式的结果作为参数值出现在动作脚本语句中,是语句的重要组成部分。按照运算符和运算结果的不同,Flash表达式可以分为算
11、术表达式、字符串表达式、关系表达式和逻辑表达式4种。例如: 算术表达式:3 + x * 6 字符串表达式:year + 年 + month + day + 日 (三)ActionScript的基本语法规则 像其他脚本语言一样,ActionScript也有它自己的语法规则。ActionScript允许用户创建自己的对象和函数。 在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。它也用于标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。例如: myDate.getDate();/调用对象myDat
12、e的getDate()方法 fish.play(); /调用电影剪辑实例fish的play()方法 fish.color = red /设置电影剪辑实例fish的颜色属性 点语法使用两个特殊的别名:_root和_parent。别名_root是指主时间轴。可以使用_root别名创建一个绝对路径。例如,下面的语句调用主时间轴中电影剪辑fish的play()方法: _root.fish.play(); Flash 5允许使用别名_parent来引用嵌套当前电影剪辑的电影剪辑(即父电影剪辑)。也可以用_parent创建一个相对目标路径。例如,如果电影剪辑dog被嵌套在电影剪辑animal之中,那么,在
13、实例dog上的下列语句告诉animal电影剪辑停止播放: _parent.stop(); ActionScript语句用大括号( )分块,如下面的脚本所示: on (release) myDate = new Date(); currentMonth = myDate.getMonth(); ActionScript语句用分号(;)结束,但如果你省略语句结尾的分号,Flash仍然可以成功地编译你的脚本。 定义一个函数时,要把参数放在圆括号中: function myFunction (name, age, reader) 调用一个函数时,也要把要传递的参数放在圆括号中: myFunction
14、(Steve, 10, true); 圆括号也可以用来改变ActionScript的运算优先级,或使自己编写的ActionScript语句更容易阅读。 在ActionScript中,只有关键字区分大小写。对于其余的ActionScript元素,可以使用大写或小写字母。例如,下面的语句是等价的: cat.hilite = true; CAT.hilite = true; 但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读ActionScript代码时更易于区分函数和变量的名字。 添加注释有助于别人对你编写的脚本的理解。注释语句用“/”开始。 ActionScript保留一些单词,专用与本语言
15、之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了ActionScript中所有的关键字: (图) 注意:这些关键字都是小写形式,不能写成大写形式。 (五)控制语句 控制结构在程序设计中占有相当重要的地位,通过控制结构可以控制动作脚本的流向,完成不同的任务。控制结构包括条件判断控制结构和循环执行控制结构。 条件判断结构在程序中用于条件判断,根据条件判断结果执行不同的动作。在Flash动作脚本语言中,使用if语句实现条件判断结构。If语句称为条件语句或“逻辑分支”。根据分支的多少,我们可以把if语句分为单分支条件判断结构和两分支条件判断结构。 (1)单分支条件判断语句 单分支条件
16、判断语句的语法格式如下: if(condition) statements; 当条件(condition)成立时,执行内的语句块(statements)。语句块可以是一到多个语句。例如: if (X0) fish.play(); 在上面的条件判断结构中,x0是条件。当x0的条件成立(true)时,执行结构内的语句fish.play();当x0的条件不成立(false)时什么也不做。 (2)两分支条件判断语句 两分支条件判断语句的语法格式如下: if(condition) statement1; else statement2; 当条件成立时,执行if后面的语句块statement1;当条件不成
17、立时,执行statement2。例如: if (year%4 = 0) & (year%1000) | (year%400 = 0) leap = year+是闰年; else leap = year+不是闰年; 上述两分支判断结构判断年份(year)“能被4整除且不能被100整除”或年份“能被400整除”两个条件。如果两个条件中有一个条件成立,则执行if后面的语句:leap = year+是闰年;如果两个条件都不成立,则执行else后面的语句:leap = year+不是闰年。 循环是指对同一段脚本代码重复执行若干次。被重复执行的代码块称为循环体。 (1)while循环 while循环分为两
18、种,一种是先判断条件是否满足,如果条件满足则执行循环体内的代码块,然后继续判断条件是否满足,直至条件不满足为止;另一种是先执行一次循环体内的代码块,才判断条件是否满足,如果满足则继续重复执行代码块,直至条件不满足为止。 在Flash动作脚本语言中while循环有以下两种语法格式: while(condition) statement(s); 和 do statement(s); while (condition); while语句是先判断后执行型,使用时应注意,格式中的条件可以是关系表达式或逻辑表达式,也可以是常数(非零视为true,零视为false);语句块由若干语句组成;while循环是先
19、测试型,有可能一次也不执行循环体;编写脚本时一定要注意,务必使循环条件最终变为false,否则会成为死循环。 (2)for循环 for循环是Flash动作脚本语言中另一种形式的控制结构。在for循环中,循环变量的初值、循环条件和循环变量的增量均写在一起,结构更清晰,使用更方便。 For循环的语法格式如下: for(init; condition; next) statement; 格式中的init用于给循环变量赋初值;condition是循环条件;next是循环增量。例如,要实现从1累加到10,可以用下面的代码实现: var s = 0; for (I=1; I10为止,共进行了10次循环。在
20、循环中实现将I累加到变量S中,结果S=1+2+10。 For循环与while循环一样,也是属于先判定后执行型。因此,如果一开始循环条件就不满足,循环内的代码块一次也不会执行。 (3)forin循环 Flash 5的动作脚本语言是一种面向对象的编程语言。Forin循环是一种特殊的循环,它应用于对象,其作用是对对象的每个属性或数组的每个元素进行循环处理。 Forin循环的语法格式如下: for(variableiterant in object) statement(s); 语法格式中的变量(variableiterant)可以是任意合法的变量名;对象(object)可以是数组对象或其他对象,如日
21、期对象、电影剪辑对象等等。 Forin循环的执行过程:首先取指定对象的第1个属性,并把属性名作为字符串存入变量中,然后对该属性执行代码块中指定的动作。对第1个属性处理完毕后,进入第2次循环,对第2个属性进行处理,依此类推,直至对指定对象的所有属性处理完毕。对数组元素的处理与此类同。Forin循环不需要显式指定循环控制变量来控制循环,因为循环次数是由指定对象的属性个数决定的。 (六)函数与对象 函数是每一种编程语言的基本组成部分。Flash 5的脚本语言也提供了一些常用的函数。可以把函数分为预定义函数(系统函数)和自定义函数。预定义函数是Flash系统提供的函数,可以直接调用。Flash 5允许
22、用户根据自己的需要定义自己的函数,称为自定义函数。自定义函数用function动作定义。在自定义函数中,用户定义一系列语句,对传递过来的值进行运算,最后返回运算结果。 对象是面向对象编程语言的重要语言元素。对象一般都封装了一些属性和方法。通过读取或设置对象的属性,调用对象的方法,可以减少编程工作量,提高编程效率,轻松实现我们想要完成的任务。 (1)int 函数功能:截取指定数值的整数部分。 语法格式:int(value) 应用举例:k1=int(2.3) 说明:参数value是一个要截取整数部分的数值、数值型变量或函数。 (2)number 函数功能:把指定的参数转换成数值。 语法格式:num
23、ber(expression) 应用举例:N1=number(2001) 说明:参数expression可以是字符表达式、逻辑表达式或其它可以转换为数值的表达式。 (3)random 函数功能:产生0到指定整数之间的随机整数。 语法格式:random(value) 应用举例:b=random(10) 说明:参数value用来指定产生的随机整数的上限,下限是0。 (4)isFinite 函数功能:测试数值是否为有限数。 语法格式:isFinite(expression) 应用举例:f=isFinite(13/5e-1000000) 说明:参数expression可以是一个逻辑值、变量或其他表达式
24、。函数的返回值是一个逻辑值。 (5)isNaN 函数功能:测试指定的参数是否为非数值。 语法格式:isNaN(expression) 应用举例:b=isNaN(2001) 说明:函数中的参数expression可以是一个逻辑值、变量或其他表达式。函数的返回值是一个逻辑值。 (6)parseFloat 函数功能:把字符串转换成浮点数。 语法格式:parseFloat(string) 应用举例:x=parseFloat(2001年9月20日) 说明:参数string是一个字符串。 (7)parseInt 函数功能:把字符串转换成整数。 语法格式:parseInt(expression, radix
25、) 应用举例:b=parseInt(3.5) 说明:函数中的参数expression可以是字符串、浮点数或其它表达式;参数radix可选,表示数的进制,有效取值范围在2-36之间。 (8)string 函数功能:把指定参数转换成字符串。 语法格式:string(expression) 应用举例:c=string(12345) 说明:函数中的参数expression可以是数值、逻辑值、变量或对象。 (9)eval 函数功能:计算表达式的值。 语法格式:eval(expression) 应用举例:x = eval(a) /a是变量名 说明:参数expression代表字符串表达式,可以是变量名、属
26、性名、对象名或电影剪辑名。 (10)getProperty 函数功能:读取电影剪辑实例指定属性的值。 语法格式:getProperty(instancename, property) 应用举例:manX = getProperty(_root.man, _x) 说明:参数instancename是电影剪辑实例名,property是电影剪辑实例的属性。 (11)getTimer 函数功能:返回动画开始播至现时的时间,单位是毫秒。 语法格式:getTimer() 应用举例:T1=getTimer() 说明:本函数为无参函数。 (12)getVersion 函数功能:返回Flash播放器版本号和运行
27、平台的信息。 语法格式:getVersion() 应用举例:version=getVersion() 说明:本函数为无参函数。 在Flash 5 ActionScript中,我们把物体称为对象,把物体的基本特征称为对象的属性。属性具有具体的值。Flash 5 ActionScript定义了以下一些系统属性。 (1) _alpha 作用:设置或返回电影剪辑实例的Alpha透明度。 应用举例:fly._alpha= 80 说明:取值范围是0-100,0表示全透明,100表示完全不透明。 (2) _height和_width 作用:设置或返回电影剪辑实例的高度和宽度,单位为像素(px)。 应用举例:
28、fish._height = 100 说明:设置_height和_width属性,可以改变电影剪辑实例的大小。 (3) _name 作用:返回或改变电影剪辑实例名。 应用举例:fish._name = bigfish 说明:可以用_name属性读取或更改实例名。 (4) _rotation 作用:返回或设置电影剪辑旋转的角度。 应用举例:_rotation = random(360) 说明:设置值以度为单位。 (5) _visible 作用:设置或返回电影剪辑实例的可见性。 应用举例:plane._visible = false 说明:它的取值是逻辑值true或false。设为false时,电
29、影剪辑不可见。 (6) _x和_y 作用:设置或返回电影剪辑实例位于父电影剪辑坐标系中的x和y坐标。 说明:如果一个电影剪辑实例位于主时间轴中,那么该电影剪辑实例的坐标系就以编辑区左上角作为坐标原点(0,0)。如果一个电影剪辑包含在另一个电影剪辑之中,那么该电影剪辑就位于父电影剪辑的坐标系中。父电影剪辑的坐标系以注册点为坐标圆点(0,0)。 (7) _xscale和_yscale 作用:设置或返回电影剪辑水平或垂直方向的缩放比例,以百分数表示。 应用举例:_root.web.spider._yscale = 200 说明:设置电影剪辑实例的_xscale和_yscale属性,可以按比例放大或缩
30、小剪辑实例。电影剪辑实例的_xscale和_yscale属性的默认值为100,注册点的默认值为0。 (8) _currentframe 作用:返回正在播放的时间轴的当前帧号,或者说播放头所在帧的帧号。 说明:这个属性的值随着播放头的移动而变化。 (9) _url 作用:返回下载动画文件的URL。 说明:读取_url属性值的方法是在属性前加上电影剪辑实例的路径。 (10) _framesloaded 作用:返回已载入的帧数。 应用举例:frameloaded = _root.web.spider._framesloaded; 说明:读取这个属性的方法是在属性前面添加实例名及其路径。 (11) _totalframes 作用:返回指定动画或剪辑实例的总帧数。 应用举例:totalframes = _root.web.spider._totalframes; 说明:读取这个属性的方法是在属性前面添加实例名及其路径。 (12) _xmouse和_ymouse 作用:返回鼠标指针的x坐标和y坐标。 说明:使用这两个属性可以获取动画中鼠标指针的位置。