第 7章 动作脚本的使用与提高
本章主要内容
?7.1 ActionScript简介
?7.2 ActionScript语法规则
?7.3 ActionScript基础
?7.4 编写和调试脚本
?7.5 事件与动作
?7.6 动作脚本的提高
?7.7 用动作脚本创建界面元素
?7.8 应用实例
?7.9 本章 习题与实验指导
第 7章 动作脚本的使用与提高
7.1 ActionScript简介
ActionScript是面向对象的脚本程序语言。
它的结构与 JavaScript相似,都是采用面向对
象的编程思想,但两者之间也存在着明显的
区别。在 Flash MX 2004中,ActionScript代码
并不是任何地方都可以使用,应该将
ActionScript代码添加到关键帧( Keyframe)、
按钮( Button)或影片剪辑( Movie Clips)
中,并分别称之为帧动作、按钮动作及影片
剪辑动作。在 Flash MX 2004中,利用
ActionScript可实现交互功能,使用户对动画
进行更灵活的控制。
在 Flash MX 2004中, 使用 ActionScript2.0
编程非常方便, 可以在动作 -帧面板中直接输
入脚本, 也可以从弹出菜单或工具箱列表中直
接调用语句, 函数及运算符等元素 。 在编写过
程中, 输入的 ActionScript2.0代码, 系统会检
查是否有语法错误并提示用户如何修改 。
Flash MX 2004中的 ActionScript2.0具有如下
特性:
?自由编写脚本模式:用户可以在动作 -帧面板
中直接输入脚本, 也可以从弹出菜单或工具列
表中直接调用语句, 函数及运算符等元素 。
?点运算符:在 Flash MX 2004中, 用户可以使
用点运算符获取和设置一个对象的属性和方
法, 包括电影剪辑实例的变量 。
?数据类型,Flash MX 2004的动作脚本支持字
符串, 数值, 逻辑, 对象和电影剪辑, 用户
能够在 ActionScript中使用不同类型的信息 。
?自定义函数:用户可以根据需要自己定义带
参函数, 让函数返回一个值, 以便在脚本中
重用代码块 。
?内置预定义对象:在 Flash MX 2004中已经内
置了很多已定义的类对象, 可以通过这些对
象构造出更多的数据对象或访问和管理某些
类型的信息 。
?剪辑动作:可以使用 onClipEvent动作直接给
编辑区中的电影剪辑实例分配动作, 如
mouseMove,data和 load等事件 。
?调试器,Flash MX 2004在的调试方面进行了
改进 。 使用调试器可以查看和修改在测试动
画模式, Flash独立播放器或浏览器中播放的
动画的变量和属性值, 以便容易发现动作脚
本中的问题 。
?新的面向对象编程模型,Flash MX 2004引入
了几个新的语言元素, 如 class,extends、
public,get,set,import等 。 这些元素采用比
以前更为标准的方式来实现面向对象的编程 。
?XML支持:使用预定义的 XML对象可以把
ActionScript转换为 XML文档, 然后传递到
服务器端应用中, 也可以用 XML对象把
XML文档载入 Flash动画中并加以解释 。 使
用预定义的 XML Socket对象可以创建不间
断的服务器连接, 为实时应用传递 XML数
据 。
?提供上下文敏感帮助,Flash MX 2004包含
有动作 -帧面板中可用的每个动作的上下文
敏感帮助 。 在编写脚本的过程中, 可以获得
与正在使用的动作有关的信息 。
7.2 ActionScript语法规则
7.2.1 ActionScript术语
ActionScript根据其特定的语法规则使用专
门的术语 。 与动作脚本相关的重要术语 。
1) 动作 (action):指定一个动画在播放时做某些
事情的一些语句 。 如 gotoAndPlay将播放头跳
转到指定的帧或场景并继续播放; getURL则
用于将影片链接到指定的网页或文件 。
2) 事件 (events):一般情况, 动作被触发时才会
执行, 起触发作用的部分就是事件 。 例如, 鼠
标的移动, 按下与释放以及按下键盘上的某个
按键等都是事件 。
第 7章 动作脚本的使用与提高
3) 类 (class):是可以创建的数据类型, 用于
定义新的对象类型 。 要定义对象的类必须先
创建一个构造函数 。
4) 结构体 (constructors):用来定义类的属性和
方法的函数 。 例如, 以下代码通过创建名称
为 circle的构造函数来创建一个新的圆类 。
function circle(x,y,radius){
this.x=x;
this.y=y;
this.radius = radius;
}
5) 常量 (constants):其值始终不变的属性 。
例如, 数字 9;布尔值中的 true和 false;键盘
的按键 BACKSPACE,ENTER,TAB等 。
6) 表达式 (expressions):由运算符和操作数组
成, 是动作脚本语句中能够产生值的任何一
部分 。 例如, X+3就是一个表达式 。
7) 函数 (function):用来传递参数并能返回值
的可重复使用的代码块 。 例如, getVersion
函数返回当前正在播放影片的 Flash播放器
的版本 。
8) 参数 (arguments):通过设置参数可以把值
传递给函数 。
9) 标识符 (identifiers):用于识别某个变量, 属
性, 对象, 函数或方法的名称 。 标识符应遵
循一定的命名规则:标识符是由字母, 数字,
下划线, _”或美元符号, $”组成, 并且第 1个
字符必须为字母, 下划线或美元符号 。 例如,
myData是一个合法的标识符, 2_mc不是合法
的标识符 。
10) 事件处理程序 (handers):是一种用来处理
和管理事件的特殊动作 。 例如, onClipEvent
就是 ActionScript的事件处理程序 。
11) 实例 (instances):是属性某个类的对象 。 一
个类的每个实例都包含该类的所有属性和方
法 。 例如, 所有影片剪辑都是 MovieClip类的
实例, 都具有该类的属性 。
12) 实例名称 (instance name):是动作脚本中
用来表示影片剪辑实例的惟一名称 。 用户可
以使用, 属性, 面板为实例指定实例名称 。
13) 属性 (property):用于定义对象的特性 。
例如 _visible用于定义影片剪辑是否可见 。
14) 方法 (methods):指被指派给某一个对象
的函数 。 一个函数被分配之后, 它可以作为
这个对象的方法被调用 。
15) 对象 (objects):是属性的集合 。 每个对象
都有自已的名字和值, 通过对象可以访问某
一类型的信息 。
7.2.2 ActionScript语法规则
ActionScript具有一定的语法规则, 用户必
须遵守这些语法规则才能创建正确编译和运行
的 动 作 脚 本 。 下 面 介 绍 适 用 于 所 有
ActionScript的一般语法规则 。
1,点语法
在 ActionScript中, 点,,”用于指明与某个对象或
电影剪辑相关的属性或方法 。 也可用于标识影
片剪辑, 变量, 函数或对象的目标路径 。 点语
法表达式是以对象或影片剪辑的名称开始, 后
跟一个点, 最后是要指定的属性, 方法或变量 。
例如,表达式, dog._x”是指影片剪辑实例 dog的
_x(指示影片剪辑的 x轴位置 )属性 。
点语法还使用特殊的别名,_root 和 _parent。
_root是指主时间轴, 使用 _root创建一个绝对
路径 。 例如, _root,MyMC.play(); 使用别名
_parent引用当前对象嵌入到的影片剪辑, 也可
用 _parent创建一个相对目标路径 。
2,大括号
动作脚本事件处理函数, 类定义以及函数用大
括号, {}”组合在一起形成块, 如下面示所示 。
on (release) {
myDate=new Date();
currentMonth=myDate.getMonth();
}
3,小括号 ( 简称括号 )
小括号, ( ), 是表达式中的一个符号, 具
有运算符的最优先级别 。 在定义函数时, 要
将所有参数都放在括号中, 如下所示:
function myuser (name,age) {
…
}
调用函数时,要将传递的所有参数放在括号
中,如下所示,
myuser (“june”,18);
括号还可以用来改变 ActionScript的优先级或
增强 ActionScript的易读性 。
4,分号
ActionScript语句以分号, ;, 结束, 如下所示:
myMC_x= myMC_x+10
5,字母的大小写
在 ActionScript中, 只有关键字区分大小写 。 对
于其余的 ActionScript,可以使用大写字母, 也可
以使用小写字母 。 例如, 下面两个语句是等价的 。
fly.gotoAndStop(15);
FLY.gotoAndStop(15);
但是, 遵守一致的大小写约定是一个好的习惯, 这
样, 在阅读脚本代码时更易于区分函数或变量的
名称 。 如,newDate, myColor等 。
6,关键字
在 ActionScript中保留了一些标识符作为
内置对象、函数等的标识。这些标识符就是
关键字,用户在编写脚本代码的过程中,不
能用这些关键字作为变量、函数或自定义对
象的标识,而且在脚本代码中使用关键字,
必须要小写。
例如:在 VAR myage=20;语句中由于关键
字 var写成了大写, Flash在执行时会报错 。
7,注释
在 ActionScript中使用字符, //”来表明其后
的内容为注释内容, 它们在脚本编辑窗口中
以灰色显示, 注释语句不会影响 Flash输出文
件的大小, 只是便于阅读和理解脚本 。 例如:
on (press) {
myDate=new Date(); // 创建新的 Date对象
cu_year= myDate.getYear(); //获取当前日期中的
年份
}
如果不想让某些脚本代码运行, 可以将
其, 注释掉, 。 在命令行的开头添加 /*,
在末尾添加 */形成注释块, 如下代码所示:
/*
with (ball) {
x+=10;
_y+=10;
}
*/
7.3 ActionScript基础
7.3.1 数据类型
数据类型是描述变量或动作脚本元素可以
包含的信息的种类 。 Flash 中内置了两种数
据类型:原始数据类型和引用数据类型 。 原
始数据类型是指字符串, 数字和布尔值, 它
们都有一个常数值, 因此可以包含它们所代
表的元素的实际值 。 引用数据类型是指影片
剪辑和对象, 它们的值可能发生改变, 因此
它们存放对元素的实际值的引用 。 另外, 还
有两类特殊的数据类型:空值和未定义 。
第 7章 动作脚本的使用与提高
1,字符串
字符串是由字母, 数字, 标点符号等组成的
字符序列 。 在 ActionScript中应用字符串时要将
其放在单引号或双引号中 。 例如, 语句
firstname =“Beijing”;
可以使用加法, +”运算符连接或合并两个字
符串 。 ActionScript会将字符串前面或后面的空
格作为该字符串的一部分 。 例如:
firstname=”China”;
greeting=”Welcome to”+firstname;
字符串变量 greeting 的值是:, Welcome to
China”。 字符串是区分大小写的 。 例如:
,welcome”和, WELCOME”是不同的字符串 。
2,数字
数字是双精度浮点数, 可以使用算术运算
符 ( 如,+,-,*,/,%,++,--等 ) 对数
字进行运算, 也可以使用内置的数学对象
Math和 Number类的方法来处理数字 。 例如,
Math.sqrt(36); 指使用 sqrt()( 平方根 ) 方法
返回数字 36的平方根 。
3,布尔值
布尔值是 true或 false中的一个 。 在动作脚本中,
布尔值经常与逻辑运算符或比较运算符一起
使用, 以控制程序流程 。 例如:
onClipEvent (enterFrame) {
if (userName ==false && password == false){
stop( );
}
}
4,对象 ( Object)
对象是属性 (property)的集合 。 每个属性都有
名称和值, 属性值可以是任何的 Flash数据类型,
甚至可以是对象数据类型, 可以使对象相互包
含 ( 即嵌套 ) 。 要指定对象及其属性, 可以使
用点运算符 。 例如, 以下代码中 book 是 desk的
属性, 而 desk又是 house的属性 。
house, desk, book;
此外, 可以使用内置对象来处理和访问特定种类
的信息 。 例如, Math对象具有一些方法, 这些
方法可以对传递给它们的数字执行数学运算 。
例如:
squareRoot=Math.sqrt(81);
动作脚本中 MovieClip对象具有一些方法,
用户可以使用这些方法控制舞台上的影片剪
辑元件实例 。
如:使用 play( ) 和 nextFrame( ) 方法:
mc1InstanceName.play( );
mc2InstanceName.nextFrame( );
用户可以创建自定义对象来组织 Flash 应
用程序中的信息 。 若要使用动作脚本向应用
程序添加交互操作, 将需要许多不同的信息,
例如, 用户的密码, 物体运动的速度, 已加
载的帧数等 。
5,影片剪辑 ( MovieClip)
影片剪辑是 Flash应用程序中可以播放动
画的元件, 是惟一引用图形元素的数据类型 。
影片剪辑类型允许使用影片剪辑类的方法控
制影片剪辑元件 。 可以使用点运算符调用这
些方法, 如下所示:
my_MC.play( );
my_MC.nextFrame( );
6,空值 ( Null)
空值数据类型只有一个 null值, 此值意味
,没有值,, 即缺少数据 。 null 值可以用在
各种情况中 。 下面是一些示例:
?指示变量尚未接收到值
?指示变量不再包含值
?作为函数的返回值, 指示函数没有返回的值
?作为函数的参数, 说明省略了一个参数
7,未定义 ( Undefined)
未 定 义 的 数 据 类 型 有 一 个 值, 即
undefined,用于尚未分配值的变量 。
7.3.2 基本命令
在 Flash MX 2004中, 可用的脚本命令达
上千条, 每条都记住是很困难的 。 本节重点
介绍在动画制作过程中, 常用的一些命令 。
有兴趣的读者可以参考这方面的专著 。
1,stop( 停止 ) 和 play( 播放 ) 命令
在动画播放过程中如果没有特殊的说明,
动画将沿着时间轴面板上的帧播放下去 。 使
用 stop命令停止正在播放的动画 。 当动画被
停止播放之后, 可以使用 play命令使动画继
续播放 。 play命令和 stop命令不带任何参数,
它们的语法格式分别为,stop()和 play()。
2,goto( 跳转 ) 命令
goto是无条件跳转命令 。 在 Flash中它可以
不受约束地跳转到任何场景的任意一帧 。 goto
有两种基本的跳转模式:
gotoAndPlay:是指从当前帧跳转到指定的场景
或帧继续播放 。
gotoAndStop:是指从当前帧跳转到指定的场景
或帧停止播放 。
goto命令的格式为:
gotoAndPlay( 场景,帧 ) 和 gotoAndStop( 场景,
帧 ) 。
场景,表示将跳转到的场景名称;
帧,表示将跳转到该场景的第几帧 。
3,stopAllSounds命令
stopAllSounds命令是指停止动画文件中
当前正在播放的所有声音 。 该命令没有参数,
其语法为 stopAllSounds( ) 。 例如:下面的
代码可以应用到一个按钮, 当单击此按钮时,
将停止动画文件中的所有声音 。
on (release) {
stopAllSounds();
}
4,getURL命令
getURL命令用于设置超级链接, 其语法
形式如下:
getURL(url [,window [,variables]])
参数含义如下:
url:用来设置链接的地址 。
window:可选参数, 设置链接网页的打开方
式, 它有四种方式:, _self”在当前窗口中
打开链接,, _blank”在一个新窗口中打开
链接,, _parent”在父级窗口中打开链接,
,_top”在最上层的窗口中打开链接 。
Variables,用于设置发送变量的 GET或 POST方
法 。 如果没有变量, 则省略此参数 。 GET 方
法将变量追加到 URL的末尾, 该方法用于发送
少量的变量; POST 方法在单独的 http 标头中
发送变量, 该方法用于发送大量的变量 。
在实际运用中, getURL往往与按钮配合使用 。
如:
on (release) {
getURL(“http://www.163.com”,”_blank”);
}
当按下按钮时, 将在一个新的窗口中打开指定
的网页 。
5,fscommand命令
fscommand命令用来与外界进行沟通,
还可以控制 Flash Player播放器 。 其语法
形式为:
fscommand(command,parameters);
l command:是 fscommand命令可以执行的
命令 。
l parameters:是执行命令的参数 。
6,loadMovie命令和 unloadMovie命令
loadMovie命令和 unloadMovie命令是一对
作用相反的命令, 用来实现调入和释放外部
影片 。 它们的语法格式:
(un)loadMovie ( url,level / target [,variables] )
?url,表示要加载或卸载的 SWF文件或 JPEG文
件的绝对或相对路径 。
?target:用于指向目标影片剪辑的路径 。
?level:该参数的值必须为一个整数, 用来指定
播放器中影片将被加载到的级别 。
?variables:可选参数, 用于指定发送变量所使
用的 HTTP方法 。 该参数必须是字符串 GET或
POST。 如没有要发送的变量, 则省略该参数 。
7,setProperty和 getProperty命令
setProperty命令用于设置影片剪辑实例的属
性值 。 getProperty命令用于获取影片剪辑实例
的属性 。 影片剪辑实例的属性包括大小, 位
置, 可见性和透明度等 。
setProperty命令的语法形式:
setProperty(目标, 属性, 值 )
getProperty命令的语法格式:
getProperty(目标, 属性 )
?目标:要设置其属性的影片剪辑的实例名称 。
?属性:要设置的属性 。
?值:属性的设置值 。
8,duplicateMovieClip和 removeMovieClip
命令
使用 duplicateMovieClip命令, 可以
在播放动画时复制一个影片剪辑 。 复制
的影片剪辑将从第一帧开始播放 。 如果
删除父级影片剪辑, 则复制的影片剪辑
也会被删除 。 使用 removeMovieClip命令
可以删除由 duplicateMovieClip命令创建
的影片剪辑实例 。
duplicateMovieClip命令语法格式为:
duplicateMovieClip(target,newname,depth)
l target,要复制的影片剪辑的路径与名称 。
l Newname:复制出来的新影片剪辑的唯一
名称 。
l depth:已复制出来的影片剪辑的唯一深度
级别 。
removeMovieClip命令语法格式为:
removeMovieClip(target)
其中,target指用 duplicateMovieClip()命
令创建的影片剪辑实例的名称。
9,startDrag和 stopDrag命令
使用 startDrag命令, 可以在播放动画时拖动
一个影片剪辑, 并且可以设置对象的拖动范围 。
当对另一个影片剪辑应用 startDrag命令时, 会
停止对当前对象的拖动, 因为一次只能拖动一
个影片剪辑 。 用 stopDrag命令可 停止当前的拖
动操作 。 startDrag命令语法格式为:
startDrag(target,[lock,left,top,right,bottom])
l target,要拖动的影片剪辑的实例名称 。
l lock,一个布尔值, 指定可拖动影片剪辑是
锁定到鼠标位置中央 (true),还是锁定到用户
首次单击该影片剪辑的位置上 (false)。 此参数
是可选的 。
left,top,right,bottom:相对于影片剪辑
父级坐标的值, 这些坐标值指定该影片剪辑的
约束矩形范围 。 这些参数是可选的 。
stopDrag命令语法格式为,stopDrag()
说明:该命令无参数, 其作用是停止当前的
拖动操作 。
例如:在下面的代码中, 按下按钮时, 拖动
影片剪辑;释放按钮, 停止拖动影片剪辑 。
on (press) {
startDrag(this,true); }
on (release) {
stopDrag();
}
10,with命令
With的作用是临时改变语句所起作用的目标 。
Flash MX 2004中允许用户使用 object 参数指定
一个对象 ( 比如影片剪辑 ), 使用 statement(s)
参数计算该对象中的表达式和动作 。 with命令
语法格式为:
with (object) {
statement(s);
}
?object:动作脚本对象或影片剪辑的一个实例 。
?statement(s):包括在大括号中的一个动作或一
组动作 。
例如:下面的代码设置 my_mc 实例的 _x 和
_y 属性, 然后指示影片剪辑 my_mc 转到第 3
帧并停止播放 。
with (my_mc) {
_x = 50;
_y = 100;
gotoAndStop(3);
}
下面的代码显示不使用 with 动作如何编写上面的
代码 。
my_mc._x = 50;
my_mc._y = 100;
my_mc.gotoAndStop(3);
11,_root命令
_root命令用来指定主场景中的实例对
象或变量 。 其语法为,_root.movieClip或
_root.action。 它包含两个参数, 其含义如
下:
l movieClip:是电影剪辑实例名称 。
laction:是指定动作变量的名称 。
12,tell目标命令
tell目标命令用于通知目标对象 。 其语
法格式为, tell target( target), 它包含
一个参数, 其含义是希望通知对象的实
例名称 。
13,ifFrameLoaded命令
ifFrameLoaded命令用来测试影片中
指定的帧是否已经下载完毕 。 其语法格
式为,ifFrameLoaded( 场景, 帧 )
14,onClipEvent命令
onClipEvent命令是 MovieClip的事件触发
程序, 对影片剪辑实例指定的事件发生时响
应 。 其语法格式为:
onClipEvent( movieEvent) ;{
…
}
movieEvent是和影片剪辑实例相联系的一
个动作事件, 它可以是下列值:
l load:影片剪辑实例在时间轴中出现时激活
事件 。
l enterFrame:在播放到某一帧时激活事件 。
l mouseMove:只要鼠标移动就激活事件 。
l mouseDown:鼠标左键按下时激活事件 。
l mouseUp:鼠标左键松开时激活事件 。
l keyDown:当某一键被按下时激活事件 。
l keyUp:当某一键被松开时激活事件 。
l data:在 loadVariables或 loadMovie动作读入
数据时激活事件 。
例如:使用 mouseMove事件, 同时使用 xmouse
和 ymouse属性获取鼠标当前的坐标值 。
onClipEvent( mouseMove) {
stageX=_root.xmouse;
stageY=_root.ymouse;
}
7.3.3 条件循环控制
1,条件控制
条件语句有 3种格式:
格式 1:
if (条件 ) {
动作序列 1
}
?条件, 计算结果为 true或 false的表达式 。
?动作序列:在条件计算结果为 true时, 执行的
一系列命令 。
?执行过程:如果满足条件 ( 结果为 true时 ),
执行动作序列 1;如果条件为 false,则 Flash将
跳过花括号内的语句, 继续运行花括号后面
的语句 。
例如:
inputName=”myName”;
pw=”88888888”;
if (input==inputName &&password==pw) {
gotoAndPlay(play);
}
gotoAndPlay(wrong);
首 先 判 断 给 定 的 条 件 (input==inputName
&&password==pw)是否成立, 若成立将执行
花括号中的语句,gotoAndPlay(play),然后再
执行花括号后面的语句;若条件不成立, 直
接执行 if 语句的后续语句:
gotoAndPlay(wrong)。
格式 2:
if (条件 ) {
动作序列 1
}
else {
动作序列 2
}
?执行过程:首先判断条件是否成立,如果条
件成立执行动作序列 1;条件不成立,则执
行动作序列 2。
例如:
inputName=”myName”;
pw=”88888888”;
if (input==inputName &&password==pw) {
gotoAndPlay(play);
}
else {
gotoAndPlay(wrong);
}
首先判断给定的条件 (input==inputName
&&password==pw)是否成立,成立将执行语
句,gotoAndPlay(play);不成立则执行:
gotoAndPlay(wrong);
格式 3:
if (条件 1) {
动作序列 1
}
else if (条件 2){
动作序列 2
}
……
else if (条件 n){
动作序列 n
}
else {
动作序列 n+1
}
执行过程:先判断条
件 1是否成立, 若值为
true,则 Flash执行动
作序列 1。 若条件 1不
成立, 再判断条件 2是
否成立, 若成立,
Flash执行动作序列 2,
若条件 2不成立, 再判
断条件 3,直至条件 n,
若条件 1至 n都不成立,
那么, Flash 将执行动
作序列 n+1
例如,
inputName=”myName”;
pw1=”88888888”;
pw2=”81111118”;
if (input==inputName &&password==pw1) {
gotoAndPlay(play1); }
else
if (input==inputName &&password==pw2){
gotoAndPlay(play2); }
else {
gotoAndPlay(wrong);
}
2,循环控制
当条件成立时, 将动作重复执行指定的次数 。
while语句的语法格式:
while(条件 ) {
指令体
}
?条件:每次执行 while语句块时都要重新计
算的表达式, 结果为 true或 false。
?指令体:当条件为 true 时要重复执行的指
令序列 。
说明:
执行过程:首先计算条件表达式的值, 若表达
式的值为 true,执行花括号中的指令体 。 再
次判断条件是否成立, 如果条件仍然成立,
再执行指令体, 直到条件表达式不成立为止 。
当条件为 false时, 跳过指令体, 并执行 while
指令体之后的第一条语句 。
例如, 下面的代码段, 将循环执行 5次 。
var i=1;
while (i<=5) {
myMC.duplicateMoiveClip(“newMC”+i,i);
++i;
}
do… while语句的语法格式:
do {
指令体
} while (条件 );
?说明:首先执行指令体, 然后判断循环
条件, 若为 true,则重复执行循环体, 直
到条件为假时退出循环体 。
?do… while 语句与 while语句的区别是:
do… while 语句至少执行一次循环体。
例如, 使用 do… while语句表示上述代码:
var i=1;
do {
myMC.duplicateMoiveClip(“newMC”+i,i);
++i;
}while (i<=5);
for语句的语法格式:
for (初始表达式 ;条件 ;增值表达式 ) {
指令体
}
?说明:首先计算初始表达式,然后判断条件,
若为 true,则执行指令体,之后执行增值表达
式,再判断条件,重复以上过程;若条件表
达式为假,则退出循环体执行其后面的语句。
例如, 用 for表示上面介绍的代码:
for(i=1; i<=5; i++){
myMC.duplicateMoiveClip(“newMC”+i,i);
}
7.3.4 变量、运算符及表达式、函数
1,变量
变量是语句中可以改变的参数值 。 变量是
编写脚本程序时最重要的数据来源, 它是存
储信息的容器, 容器本身绐终不变, 但内容
可以改变 。 在动画播放时, 通过变量可以记
录和保存用户操作的信息, 记录动画播放时
更改的值, 或计算某个条件是真还是假等 。
在动作脚本中首次定义一个变量时,最好
赋给它一个已知的值,称为初始化变量。变
量被赋值时,这个变量的数据类型将被确定。
变量具体的应用,用户可以在后面的实例中
体会。
变量的命名
变量的命名必须遵循以下规则:
?变量名必须是一个标识符 。
?变量名不能是关键字或逻辑常量 。
?变量名在其作用范围内必须是唯一的 。
变量的类型
在 Flash MX 2004的动作脚本中, 给变量赋值
时会自动确定变量的数据类型 。 例如:
myAge=20;
myName=”surry”;
在表达式 myAge=20中,变量 myAge是
数值型变量。在表达式 myName=”surry” 中,
系统将自动把变量 myName的数据类型确定
为字符串型。如果声明了一个变量,但又没
有给变量赋值的话,那么,这个变量不属于
任何类型,在 Flash中它被称为未定义型
( undefined)。
变量的作用范围
变量的作用范围是指能够识别和引用该
变量的区域 。 在动作脚本中可将变量分为全
局变量和局部变量 ( 或称本地变量 ) 。 全局
变量可在所有时间轴中共享;局部变量只在
它所在的代码块内 ( 花括号之间 ) 有效 。 在
动作脚本中使用局部变量可以有效防止变量
名的冲突, 在函数体内使用局部变量会使函
数成为可重用的独立代码段 。 而全局变量通
常用于完成不同代码段之间数据的传递任务,
例如, 要在一个代码块中引用另一个代码块
中的变量, 或者是在整个动画中传递某个变
量的值 。
变量的声明
声明全局变量, 可以使用 set Variables命
令或赋值操作;声明局部变量, 可以在函数
体内使用 var语句 。 局部变量作用范围只限
于它所在的代码块内 。
在动作脚本中使用变量
必须在动作脚本中声明变量,然后才能
在表达式中使用这个变量。如果使用一个未
声明的变量,该变量的值将是 NaN或
undefined,脚本将产生意外的结果。
2,运算符及表达式
运算符是指能够对常量和变量进行运算
的符号 。 在 Flash MX 2004 中提供了大量的
运算符, 如算术运算符, 字符串运算符和逻
辑运算符等 。 如果需要使用运算符, 可以在
一般的函数或语句的 value文本框中直接输
入, 也可以在命令列表窗口中选择 Operators
选项, 在子菜单中双击一个运算符, 添加到
命令编辑窗口中 。
表达式是指将运算符和运算对象连接起
来符合语法规则的式子 。 也可以理解为计算
并能返回一个值的任何语句 。
算术运算符和算术表达式
算术运算符可以执行加、减、乘、
除和其他算术运算。其中增量或减量运
算符最常见的用法是 i++,++i或 i--,--i。
算术表达式是将算术运算符和括号将运
算对象连接起来的符合语法规则的式子。
运算符 执行的运算 运算符 执行的运算
+ 加法 - 减法
* 乘法 / 除法
% 求模 ++ 递增
-- 递减
数值运算符
比较运算符和比较表达式
比较运算符用于比较两个表达式的值,
然后返回一个布尔值( true 或 false)。比较
运算符最常用于条件语句和循环语句中。
运算符 执行的运算 运算符 执行的运算
> 大于 < 小于
>= 大于或等于 <= 小于或等于
比较运算符
逻辑运算符和逻辑表达式
逻辑运算符是对布尔值 ( true或 false) 进
行比较, 然后返回第三个布尔值 。
逻辑运算符和操作数连在一起形成逻辑
表达式。在逻辑表达式中当两个操作数都为
true时,逻辑与表达式才为真,否则全为假;
当两个操作数都为 false时,逻辑或表达式才
为假,否则全为真。
运算符 执行的运算 运算符 执行的运算
&& 逻辑“与” || 逻辑“或”
! 逻辑“非”
逻辑运算符
赋值运算符和赋值表达式
可以使用赋值运算符 ( =) 为变量赋值 。
赋值运算符将变量和表达式连接起来形成赋
值表达式 。 例如,myage=18;
还可以使用赋值运算符在一个表达式中给
多个变量赋值, 例如,a=b=c=6;
运算符 执行的运算 运算符 执行的运算
= 赋值 += 相加并赋值
-= 相减并赋值 *= 相乘并赋值
/= 相除并赋值 %= 求模并赋值
<<= 按位左移位并赋值 >>= 按位右移位并赋值
>>>= 右移位填零并赋值 &= 按位“与”并赋值
|= 按位“或”并赋值 ^= 按位“异或”并赋值
赋值运算符
等于运算符和等于表达式
等于运算符 ( ==) 可以确定两个操作数的值或
标识是否相等并返回一个布尔值 。 如果操作数为
字符串, 数字或布尔值, 它们将通过值进行比较 。
如果操作数为对象或数组, 它们将通过引用进行
比较 。 等于运算符和操作数连在一起形成等于表
达式 。 例如,if (n==100)。
如果将表达式写成,n=100,则是错误的 。 该
表达式完成的是赋值操作而不是比较操作 。
完全等于运算符( ===)与等于运算符( ==)
相似,但有区别:完全等于运算符不执行类型转
换。如果两个操作数属于不同的类型,完全等于
运算符会返回 false。不完全等于运算符( !==)
会返回完全等于运算符的相反值。
运算符 执行的运算 运算符 执行的运算
== 等于 != 不等于
=== 完全等于 !== 完全不等于
相等运算符
提示,当在同一语句中使用两个或多个运算符
时,动作脚本按照标准的等级来决定哪一个运
算符优先执行。
3,函数
函数是一种一次编写后可以在动画文件
中反复使用的脚本代码块 。 如果将值当作
参数传递给函数, 该函数将对这些值执行
运算 。 函数也可以返回值 。
动作脚本中的函数包含内置函数和自定
义函数两大类 。
内置函数
内置函数就是动作脚本中已经定义好的
函数, 用户可直接使用这些函数 。 用户可以
在, 动作, 面板的, 全局函数, 类别中找到
Flash提供函数 。
若要调用函数, 只需使用函数名称并传递
所有必需的参数即可, 例如:
isNaN(someVar);
getTimer();
eval(“someVar”);
自定义函数
自定义函数是由用户根据需要自已定义
的函数 。 在 Flash中, 允许用户创建自定义
函数来执行一系列语句, 对传递过来的值进
行操作, 并可以返回值 。 在自定义函数中,
最好对它的输入, 输出和用途作详细的注释,
以便于用户的理解和使用 。 函数定义好以后,
就可以从任意一个时间轴中调用它 。
( 1) 定义函数
函数和变量一样, 都附加在定义它们的
影片剪辑的时间轴上, 调用时必须使用目标
路径才能调用它们 。 要定义一个时间轴函数,
可以使用 function 动作, 后跟一个函数名,
要传递给该函数的参数以及指定函数用途的
动作脚本语句 。
例如, 定义一个求圆面积的函数, 函数名
为 areaOfCircle,函数所带参数为 radius:
function areaOfCircle (radius) {
return Math.PI*radius*radius;
}
( 2) 将参数传递给函数
参数是函数对其执行代码的元素 。 例如,
下面的函数有两个参数 initials和 finalScore。
function scorecard(initials,finalScore) {
card.display = initials;
card.score = finalScore;
}
在调用函数时, 需将必需的参数传递给函
数 。 函数会用传递的值替换函数定义中的参
数 。 下面的函数调用会把值 "Jeb" 赋给变量
display,并把值 100赋给变量 score。
scorecard("Jeb",100);
( 3) 从函数中返回值
通常希望定义的函数能返回一个确定的值,
使用 return 语句可以从被调函数中返回值 。
在函数中使用 return 语句应遵守以下规则:
? 若需要被调函数返回一个值, 必须在被调
函数中加入一条 return 语句 。
?如果被调函数中没有 return语句, 函数将返
回一个不确定的值 。
?若不需要被调函数返回值, 使用, void”定
义无类型, 并且不要加入 return 语句 。
( 4) 调用自定义函数
可以使用目标路径从任何时间轴调用函
数, 如果函数是使用 _global标识符声明的全
局函数, 则无需使用目标路径即可调用函数 。
若要调用函数,可以输入函数名称的目
标路径,若带有参数,还应在括号内传递所
有必需的参数。例如,下面的语句将在主时
间轴上调用影片剪辑 mymc中的函数 abc(),
向其传递参数 5,然后将结果存储在变量
wab中,var wab=_root.mymc.abc(5);
请进入 Flash窗口通过实例介绍函数的具
体应用 。
7.4 编写和调试脚本
在 Flash MX 2004 中, 用户可以将编写的
脚本嵌入到 FLA文件中, 也可以在计算机上
存储为外部文件, 这样便于在多个 FLA文件
中重用代码 。
要编写嵌入的脚本, 可以使用, 动作, 面
板并将该动作附加到某一按钮或影片剪辑,
或者附加到时间轴的一个帧中 。 要编写外部
脚本文件, 可以使用任何文本编辑器或代码
编辑器 。
要测试脚本, 可以使用 Flash Player的专
用调试版本来帮助排查故障 。
第 7章 动作脚本的使用与提高
7.4.1使用动作面板和脚本窗口
“动作”面板是 Flash MX 2004提供编
辑动作脚本的专用环境,在 Flash MX
2004中,取消了用于编辑简单命令的普
通模式,对“动作”面板的功能进行了
扩充和增强,在代码输入的过程中提供
代码提示功能,使用“动作”面板仍然
可以方便地进行脚本编写和修改操作。
1,使用, 动作, 面板
单击, 窗口, →, 开发面板, →, 动作,
命令, 或者按下 〈 F9〉 键打开如下图所示
的, 动作, 面板 。
脚本导航器
动作工具箱
工具栏
动作编辑区
“动作”面板界面
?动作工具箱:包含了所有的动作脚本命令和
相关的语法 。 图标是命令夹, 单击打开命令
夹, 双击它或者用鼠标拖动它到动作编辑区 。
?脚本导航器:在动作工具箱的下方显示用户
正在进行添加的命令或脚本的位置 。 如果单
击脚本导航器中的某一项目, 则与该项目关
联的脚本将出现在, 脚本, 窗格中, 并且播
放头将移到该位置 。 如果双击脚本导航器中
的某一项, 则该脚本会被固定 。
?动作编辑区:是进行动作脚本输入, 编辑的
主要区域 。 针对当前对象脚本代码的多少可
调整该区域的大小 。
?工具栏:含有常用的功能按钮 。
2,使用, 脚本, 窗口
在 Flash MX 2004中, 可直接在, 动作, 面
板中输入添加脚本代码, 脚本代码是嵌入在动
画文件中的 。 在 Flash Professional 2004 中,
可以使用, 脚本, 窗口添加脚本代码 。 在, 脚
本, 窗口中输入的脚本代码是以脚本文件 (AS)
形式保存的, 在动画文件中, 可以使用
#include 语句来访问存储在外部的脚本代码文
件 。
选择, 文件, →, 新建, →, 动作脚本文
件,, 或者选择, 文件, →, 打开,, 打开现
有 AS 文件的同时打开, 脚本, 窗口 。
不管是使用, 动作, 面板还是使用, 脚本,
窗口, 它们均使用相同的动作脚本编辑器 。
1,语法突出显示
在动作脚本中, 如果
使用了错误的动作脚本,
脚本将不会运行 。 用户
可以选择, 编
辑, →, 首选参数, 命
令打开如右图所示的
,首选参数, 对话框 。
7.4.2 使用动作脚本编辑器
“首选参数”对话框
2,编写触发代码提示的代码
使用动作脚本编辑器, Flash可以检测到正在
输入的动作并显示代码提示, 即包含该动作完
整语法的工具提示, 或列出可能的方法或属性
名称的弹出菜单 。
使用动作脚本 2.0,可以精确键入基于内置类
( 如,Button,Array等 ) 的变量, 这样可以使
动作脚本编辑器显示该变量的代码提示 。 例如:
var mames:Array=new Array();
names.
只要加入句点,,”,Flash就会显示可用于 Array对
象的方法和属性的列表, 因为已经将该变量的
类型指定为数组 。
3,检查语法
使用动作脚本编辑器编辑动作脚本时, 要检
查当前的脚本中是否存在语法错误, 用户可以
在动作脚本输入完成之后 ( 或对其中一部分脚
本 ), 单击动作编辑区上方的, 语法检查, 按
钮, 若脚本中没有语法错误, 则系统将显示
,此脚本中没有错误, 信息框;若脚本中有语
法错误, 系统会提示脚本有错误, 并在, 输出,
窗口显示错误的信息 。
另外, 用户还可以在动画制作完成后, 通
过, 窗口, →, 测试影片, 命令测试动画效果
的过程中检查动作脚本代码, 代码中的语法错
误将列在, 输出, 面板中 。 用户还可以检查代
码块两边的小括号, 花括号或中括号是否齐全 。
4,设置代码格式
设置格式选项
在设置“自动套用格式选项”后,设置将自
动应用于编写的代码,但不应用于现有代码。要
将所作设置应用于现有代码,用户必须手动操作。
使用自动缩进
在默认情况下自动缩进功能是打开的 。 在, (,
或, {”之后键入的文本将按照动作脚本首选参数
中的, 制表符大小, 设置自动缩进 。 要关闭自动
缩进, 在动作脚本首选参数中取消选择, 自动缩
进, 。
启用或禁用行号和自动换行
单击按钮, 在, 视图选项, 弹出菜单中, 启
用或禁用, 查看行号, 和, 自动换行, 。
7.4.3 调试脚本
脚本代码输入完成后, 必须对所输入的脚
本代码进行调试, 以便于发现脚本中是否存
在错误, 调试脚本通常使用以下两种方法 。
1,使用, 调试器, 面板
可使用系统提供的, 调试器, 来查找运
行动画文件时出现的错误 。 用户可以在测试
模式下对本地文件进行调试, 也可以对远程
服务器上的文件进行调试 。 使用, 调试器,
可在播放动画文件时显示和修改变量和属性
的值, 可以在动作脚本中设置断点 。 断点会
停止动画播放并跟踪代码, 然后回到脚本中
进行修改 。
2,使用, 输出, 面板
在调试脚本的过程中, 通常使用, 输出,
面板和 trace 语句完成脚本调试工作 。
若影片在编辑环境中, 可以选择, 控
制, →, 测试影片, 命令, 进入影片测试环
境, 选择, 窗口, →, 输出, 命令, 即可显
示, 输出, 面板, 如果影片中的动作脚本存
在语法错误, 将在, 输出, 面板中提示脚本
出错的位置和原因 。
7.5.1 事件
事件是触发动作的信号 。 用户单击鼠标,
按下键盘上某个按键都会产生一个事件, 这
些类型的事件通常称作用户事件 。 由播放器
自动产生的事件称作系统事件 。
在动画文件中, 为使应用程序能够对事
件做出反应, 必须使用事件处理函数 。
动作脚本提供了几种不同的方法来处理
事件, 下面重点介绍使用按钮和影片剪辑事
件处理函数的方法 。
7.5 事件与动作
第 7章 动作脚本的使用与提高
1,使用按钮事件处理函数
on()事件处理函数可以直接将事件处理函
数附加到按钮实例,并指定触发动作的鼠标
事件或按键事件。选中按钮,选择“全局函
数” →,影片剪辑控制” →, On”,将弹出如
下图所示的菜单。
On命令菜单
菜单中各个命令的含义如下:
?press:当鼠标指针移动到按钮上并按下鼠
标按键时, 就会触发指定的动作 。
?release:当单击按钮并释放鼠标按键时, 就
会触发指定的动作 。
?releaseOutside,当按下按钮后, 将鼠标指
针移到按钮之外时释放鼠标按键, 就会
?触发指定的动作 。
?rollOut:鼠标指针滑出按钮区域, 就会触发
指定的动作 。
?rollOver:鼠标指针由按钮外移动到按钮内
时, 就会触发指定的动作 。
?dragOut:当鼠标指针滑过按钮时按下鼠标
按钮, 然后滑出此按钮区域, 就会触发
?指定的动作 。
?dragOver:当鼠标指针移动到按钮上并按下
鼠标左按钮, 然后滑出此按钮范围, 再
?滑回此按钮之上, 就会触发指定的动作 。
keyPress:按下键盘上指定的键时, 就会触
发指定的动作 。
2,使用影片剪辑事件处理函数
使用 onClipEvent()事件处理函数可直接将
事件处理函数附加到影片剪辑实例中 。 选中
影片实例, 在, 动作, 面板中选择, 全局函
数, →, 影片剪辑控制, →, onClipEvent”命
令, 弹出如下图所示的菜单 。
onClipEvent命令菜单
影片剪辑元件实例的事件源含义如下,
?load,当影片剪辑实例载入时间轴时产生这
个事件 。
?unload,从时间轴上卸载了影片剪辑之后,
就发生该事件 。
?EnterFrame:一旦影片剪辑的播放指针进入其
时间轴的每一帧, 就发生这个事件 。
?mouseMove,在场景中移动鼠标时发生这个
事件 。
?MouseDown:当按下鼠标左键时发生这个事
件 。
?mouseUp,当释放鼠标左键时发生这个
事件 。
?keyDown,当按下键盘上的某个键时发
生这个事件 。
?KeyUp:当释放键盘上的某个键时发生
这个事件 。
?Data:当影片剪辑实例使用 loadVariables()
或 loadMovie() 动作接收数据时发生这个
事件 。
7.5.2 动作
动作是由一条或多条的命令语句组成的程序
代码 。 动画的交互性是通过对按钮, 关键帧或
影片剪辑设置一定的动作实现的, 分别称为帧
动作, 按钮动作及影片剪辑动作 。
1,设置帧动作
将动作添加到指定的关键帧上,设置了动
作的帧上将出现一个小写的字母 a,当动画播
放到该帧时会自动执行预设的动作。典型的应
用的就是控制动画的播放和结束时间。为便于
动作脚本的查看和修改,最好将帧动作放在一
个单独的层上。
请在 Flash窗口中介绍设置帧动作的方法。
2,设置按钮动作
设置按钮动作, 是制作交互动画时最基础
也最实用的功能 。 按钮动作的触发事件可以
是鼠标的不同状态, 如:鼠标滑过按钮, 按
钮被按下或者是按下键盘上的某个键等 。 每
个按钮实例上的动作是独立的, 不会相互影
响 。
设置按钮动作时,必须使用 on()事件处理
函数;用以指定触发动作的鼠标事件或按键
事件。
请进入 Flash窗口说明设置按钮动作的具体
操作方法。
3,设置影片剪辑动作
影片剪辑是 Flash MX 2004中最重要的
对象之一。它拥有自已的时间轴,每个影片
剪辑都有自已唯一的名字。为影片剪辑设置
动作并指定触发事件后,当事件发生时就会
执行设置的动作。
设置影片剪辑动作时,因为要响应不同
的触发事件,所以必须使用 onClipEvent()事
件处理函数。
请进入 Flash窗口通过实例来说明设置影
片剪辑动作的方法。
7.6 动作脚本的提高
7.6.1 建立面向对象的动作脚本
,对象, 指的是具有一定功能的程序与数据
的集合, 如 ActionScript中的按钮图符就是对
象 。 讲到对象就必须提到类, 因为类是建立对
象的模型, 对象是类的实例 。 对象与它的类之
间的关系类似于房子与建筑图纸之间的关系 。
有两种方法创建对象:
?使用, new”操作符, 从预定义对象类或自定义
对象类创建对象 。
?使用对象初始化操作符, {}”来创建类形式对象 。
第 7章 动作脚本的使用与提高
7.6.2 使用预定义对象
1,使用 Array( 数组 ) 对象
数组对象是一种使用频率比较高的内置
对象,常使用 new Array()直接实例化一个
数组对象,所有数组都从 0开始,即数组中
的第一个元素为 [0],第二个元素为 [1],依
次类推。
2,使用 Date( 日期 ) 对象
Date对象从正在播放影片的计算机系统
时钟获取日期和时间信息。为使用 Date 对
象,必须使用构造函数 new Date()创建一个
Date 对象实例。
3,使用 Color( 颜色 ) 对象
在 Flash MX 2004中,使用颜色对象的
方法可以调整影片剪辑的颜色。 setRGB方
法可把十六进制的 RGB(红、绿、蓝)值
赋给对象,而 setTransform方法则用来设置
RGB的百分比和补偿值以及一种颜色的透
明度。
4,使用 Sound( 声音 ) 对象
在 Flash MX 2004中, 使用声音对象可以
控制影片中的声音 。 在调用 Sound对象的方
法之前, 必须使用构造函数 new Sound创建
一个新的 Sound对象实例 。
5,使用 Key( 键盘 ) 对象
Key对象是不需要构造函数创建对象实
例即可使用其方法和属性的对象。使用 Key
对象的方法可生成用户能够通过标准键盘控
制的界面。 Key对象的所有属性都是常量,
都必须要大写。 Key.getCode()方法常用在
onClipEvent事件处理程序中。
6,使用 Mouse( 鼠标 ) 对象
Mouse对象在影片中提供对鼠标的控制 。
Mouse对象不需要构造函数创建对象实例即
可访问其属性和方法 。 默认情况下鼠标指针
是可见的, 使用 Mouse 对象的方法可以实
现隐藏和显示影片中的鼠标指针 ( 光标 ),
也可以实现用影片剪辑创建的自定义指针 。
它有两种格式:
Show方法,Mouse.Show(); //显示鼠标指针,
Hide方法,Mouse.Hide(); //隐藏鼠标指针,
7,使用 MovieClip( 影片剪辑 ) 对象
Flash 影片中的每个影片剪辑均是
MovieClip 对象的实例 。 用户可以使用此对
象的方法和属性控制影片剪辑对象实例 。
MovieClip 对象的方法提供的功能与定位影
片剪辑的动作所提供的功能相同 。 不需使用
构造函数方法即可调用 MovieClip 对象的方
法, 只需使用以下语法按名称引用影片剪辑
实例即可:
my_mc.play();
my_mc.gotoAndPlay(3);
7.6.3 使用自定义对象
1,创建自定义对象
一个对象包含了很多属性, 每一个属性都有
自 已 的 名 称 和 属 性 值 ( 属 性 值 可 以 是
ActionScript支持的任何数据类型 ), 这些属性
可以接收值或通过一定的方法改变其值 。
利用构造函数创建一个类, 可以使用 new将
对象实例化, 这有助于重复使用代码, 减少文
件的数据量 。 定义一个构造器函数格式:
function functionname ([argument0,argument1,
argument2,…,argumentN]) {
statement(s);
}
可以使用构造器函数体中的关键字 this来
引用该构造器创建的对象 。 调用构造器函数
时, Flash会将 this作为隐藏参数传递 。 例如,
创建一个构造器函数 Book,它具有 width、
height和 area属性, 脚本代码如下:
function Book(width,height) {
this,width= width;
this,height= height;
this.area= this.width* this,height;
}
定义完构造器函数之后, 可以通过关键字
new来实例化对象 。 例如, 下面的代码将使
用 new运算符创建一个新的 Book对象的实例,
并将参数传递给它 。
var newBook(20,50);
创建完 Book对象实例后, 就可以使用该对象的
属性了 。 例如,
var x=newBook,width; //变量 x的值为 20.
var y=newBook,height ; //变量 y的值 50.
var s=newBook,area; //变量 s的值 1000.
2,对象属性的继承
每个构造器函数都有一个 _prototype属性, 它
是在定义该函数时自动创建的, 该属性代表用该
函数创建的对象的默认属性值 。 当使用一个对象
去创建另一个对象值的时候, 这个对象的所有属
性和方法都可以通过 _prototype属性被新的对象
继承, 继承的关系是根据一定的层次关系处理的 。
调用一个对象的属性和方法时, 系统首先在对象
中搜索该对象的属性或方法是否存在, 如果不存
在, 则会自动通过 _prototype属性在所继承的对
象中寻找属性或方法是否存在 。 如果这些属性或
方 法 不 属 于 所 继 承 的 对 象, 则 会 通 过
object_prototype属性再到所继承的对象中寻找 。
3,创建自定义对象的方法
可以按照下列方法创建自定义对象, 操作步
骤如下:
1) 首先定义一个构造器函数 。 下面的脚本代
码是用来创建一个构造器函数 circle。
function circle(radius) {
this,radius,radius;
}
2) 定义 circle对象的方法 。 下面的脚本代码是
为 circle定义一个求面积的方法 。
circle,prototype.area= function ( ) {
return Math.PI* this,radius *this,radius;
}
3) 使用 new实例化一个对象 。 下面是实例化
一个 circle对象的脚本代码 。
var new_circle=new circle (10 );
4) 创建调用实例的方法 。 下面的脚本代码是
调用 circle对象的方法:
var new_circleArea=new_circle.area ( );
7.7 用动作脚本创建界面元素
7.7.1创建表单
表单是交互的高级应用, 一般由按钮,
影片剪辑实例和文本框组成 。 通过表单可以
将信息发送到远程服务器上 。 常见的表单元
素, 如单选按钮, 复选框, 下拉列表框等都
可以创建成按钮或影片剪辑实例 。 利用这些
界面元素可以创建调查表, 用户定单或搜索
界面等, 这样就可以利用这些 Flash表单收
集地址信息并发送到别的应用程序中, 然后
将这些信息编译成电子邮件或数据库文件 。
第 7章 动作脚本的使用与提高
构成表单的元素可分为两类, 一类是构
成表单的外观元素, 另一类是服务器应用程
序或客户端脚本, 它们的作用是处理用户输
入的信息 。
在许多网站都提供了网站的登录入口,
用户需要输入正确的用户名和密码才能登录
网站, 否则不能登录网站 。
请进入 Flash窗口通过, 用户登录系统,
介绍创建表单的方法 。
7.7.2 创建弹出式菜单
在许多网站的导航菜单中使用了类似
Windows菜单的效果 。 在 Flash中可以制作类
似的菜单效果 。
在创建弹出式菜单时,有两点需要注
意:一是在设置弹出菜单所包含的所有按钮
的属性时,一定要选中“属性”面板中的
Track As Menu项,这样菜单中的所有按钮
都能接受到鼠标事件。二是把弹出菜单展开
时所占的区域用一个大的按钮包围起来,该
按钮用于当鼠标指针移出菜单区域且按钮被
释放时使菜单收回。
请进入 Flash通过实例详细介绍具体方法。
7.8 应用实例
7.8.1 鼠标跟随特效
当鼠标在舞台上拖动时,会随着鼠标的
移动产生一个兰色的方块,方块慢慢放大并
逐渐消失,效果如下图所示。 请在 Flash窗口
中进行详细介绍。
鼠标跟随效果图
第 7章 动作脚本的使用与提高
7.8.2 拼图游戏
游戏主界面的左侧是分割并被打乱顺序
的图案,右侧是拼图的目标区域。游戏要求
将左边的图案碎块分别拖放到右边的小方格
中,若能组成一幅完整的图案,则游戏成功。
效果如下图所示。
游戏主界面 拼好后的效果图
本章习题与实验指导
本章习题,见书中 第 189页
实验指导,见书中 第 190页
第 7章 动作脚本的使用与提高
Thank you very much!
本章到此结束。
谢谢您的光临!
本章主要内容
?7.1 ActionScript简介
?7.2 ActionScript语法规则
?7.3 ActionScript基础
?7.4 编写和调试脚本
?7.5 事件与动作
?7.6 动作脚本的提高
?7.7 用动作脚本创建界面元素
?7.8 应用实例
?7.9 本章 习题与实验指导
第 7章 动作脚本的使用与提高
7.1 ActionScript简介
ActionScript是面向对象的脚本程序语言。
它的结构与 JavaScript相似,都是采用面向对
象的编程思想,但两者之间也存在着明显的
区别。在 Flash MX 2004中,ActionScript代码
并不是任何地方都可以使用,应该将
ActionScript代码添加到关键帧( Keyframe)、
按钮( Button)或影片剪辑( Movie Clips)
中,并分别称之为帧动作、按钮动作及影片
剪辑动作。在 Flash MX 2004中,利用
ActionScript可实现交互功能,使用户对动画
进行更灵活的控制。
在 Flash MX 2004中, 使用 ActionScript2.0
编程非常方便, 可以在动作 -帧面板中直接输
入脚本, 也可以从弹出菜单或工具箱列表中直
接调用语句, 函数及运算符等元素 。 在编写过
程中, 输入的 ActionScript2.0代码, 系统会检
查是否有语法错误并提示用户如何修改 。
Flash MX 2004中的 ActionScript2.0具有如下
特性:
?自由编写脚本模式:用户可以在动作 -帧面板
中直接输入脚本, 也可以从弹出菜单或工具列
表中直接调用语句, 函数及运算符等元素 。
?点运算符:在 Flash MX 2004中, 用户可以使
用点运算符获取和设置一个对象的属性和方
法, 包括电影剪辑实例的变量 。
?数据类型,Flash MX 2004的动作脚本支持字
符串, 数值, 逻辑, 对象和电影剪辑, 用户
能够在 ActionScript中使用不同类型的信息 。
?自定义函数:用户可以根据需要自己定义带
参函数, 让函数返回一个值, 以便在脚本中
重用代码块 。
?内置预定义对象:在 Flash MX 2004中已经内
置了很多已定义的类对象, 可以通过这些对
象构造出更多的数据对象或访问和管理某些
类型的信息 。
?剪辑动作:可以使用 onClipEvent动作直接给
编辑区中的电影剪辑实例分配动作, 如
mouseMove,data和 load等事件 。
?调试器,Flash MX 2004在的调试方面进行了
改进 。 使用调试器可以查看和修改在测试动
画模式, Flash独立播放器或浏览器中播放的
动画的变量和属性值, 以便容易发现动作脚
本中的问题 。
?新的面向对象编程模型,Flash MX 2004引入
了几个新的语言元素, 如 class,extends、
public,get,set,import等 。 这些元素采用比
以前更为标准的方式来实现面向对象的编程 。
?XML支持:使用预定义的 XML对象可以把
ActionScript转换为 XML文档, 然后传递到
服务器端应用中, 也可以用 XML对象把
XML文档载入 Flash动画中并加以解释 。 使
用预定义的 XML Socket对象可以创建不间
断的服务器连接, 为实时应用传递 XML数
据 。
?提供上下文敏感帮助,Flash MX 2004包含
有动作 -帧面板中可用的每个动作的上下文
敏感帮助 。 在编写脚本的过程中, 可以获得
与正在使用的动作有关的信息 。
7.2 ActionScript语法规则
7.2.1 ActionScript术语
ActionScript根据其特定的语法规则使用专
门的术语 。 与动作脚本相关的重要术语 。
1) 动作 (action):指定一个动画在播放时做某些
事情的一些语句 。 如 gotoAndPlay将播放头跳
转到指定的帧或场景并继续播放; getURL则
用于将影片链接到指定的网页或文件 。
2) 事件 (events):一般情况, 动作被触发时才会
执行, 起触发作用的部分就是事件 。 例如, 鼠
标的移动, 按下与释放以及按下键盘上的某个
按键等都是事件 。
第 7章 动作脚本的使用与提高
3) 类 (class):是可以创建的数据类型, 用于
定义新的对象类型 。 要定义对象的类必须先
创建一个构造函数 。
4) 结构体 (constructors):用来定义类的属性和
方法的函数 。 例如, 以下代码通过创建名称
为 circle的构造函数来创建一个新的圆类 。
function circle(x,y,radius){
this.x=x;
this.y=y;
this.radius = radius;
}
5) 常量 (constants):其值始终不变的属性 。
例如, 数字 9;布尔值中的 true和 false;键盘
的按键 BACKSPACE,ENTER,TAB等 。
6) 表达式 (expressions):由运算符和操作数组
成, 是动作脚本语句中能够产生值的任何一
部分 。 例如, X+3就是一个表达式 。
7) 函数 (function):用来传递参数并能返回值
的可重复使用的代码块 。 例如, getVersion
函数返回当前正在播放影片的 Flash播放器
的版本 。
8) 参数 (arguments):通过设置参数可以把值
传递给函数 。
9) 标识符 (identifiers):用于识别某个变量, 属
性, 对象, 函数或方法的名称 。 标识符应遵
循一定的命名规则:标识符是由字母, 数字,
下划线, _”或美元符号, $”组成, 并且第 1个
字符必须为字母, 下划线或美元符号 。 例如,
myData是一个合法的标识符, 2_mc不是合法
的标识符 。
10) 事件处理程序 (handers):是一种用来处理
和管理事件的特殊动作 。 例如, onClipEvent
就是 ActionScript的事件处理程序 。
11) 实例 (instances):是属性某个类的对象 。 一
个类的每个实例都包含该类的所有属性和方
法 。 例如, 所有影片剪辑都是 MovieClip类的
实例, 都具有该类的属性 。
12) 实例名称 (instance name):是动作脚本中
用来表示影片剪辑实例的惟一名称 。 用户可
以使用, 属性, 面板为实例指定实例名称 。
13) 属性 (property):用于定义对象的特性 。
例如 _visible用于定义影片剪辑是否可见 。
14) 方法 (methods):指被指派给某一个对象
的函数 。 一个函数被分配之后, 它可以作为
这个对象的方法被调用 。
15) 对象 (objects):是属性的集合 。 每个对象
都有自已的名字和值, 通过对象可以访问某
一类型的信息 。
7.2.2 ActionScript语法规则
ActionScript具有一定的语法规则, 用户必
须遵守这些语法规则才能创建正确编译和运行
的 动 作 脚 本 。 下 面 介 绍 适 用 于 所 有
ActionScript的一般语法规则 。
1,点语法
在 ActionScript中, 点,,”用于指明与某个对象或
电影剪辑相关的属性或方法 。 也可用于标识影
片剪辑, 变量, 函数或对象的目标路径 。 点语
法表达式是以对象或影片剪辑的名称开始, 后
跟一个点, 最后是要指定的属性, 方法或变量 。
例如,表达式, dog._x”是指影片剪辑实例 dog的
_x(指示影片剪辑的 x轴位置 )属性 。
点语法还使用特殊的别名,_root 和 _parent。
_root是指主时间轴, 使用 _root创建一个绝对
路径 。 例如, _root,MyMC.play(); 使用别名
_parent引用当前对象嵌入到的影片剪辑, 也可
用 _parent创建一个相对目标路径 。
2,大括号
动作脚本事件处理函数, 类定义以及函数用大
括号, {}”组合在一起形成块, 如下面示所示 。
on (release) {
myDate=new Date();
currentMonth=myDate.getMonth();
}
3,小括号 ( 简称括号 )
小括号, ( ), 是表达式中的一个符号, 具
有运算符的最优先级别 。 在定义函数时, 要
将所有参数都放在括号中, 如下所示:
function myuser (name,age) {
…
}
调用函数时,要将传递的所有参数放在括号
中,如下所示,
myuser (“june”,18);
括号还可以用来改变 ActionScript的优先级或
增强 ActionScript的易读性 。
4,分号
ActionScript语句以分号, ;, 结束, 如下所示:
myMC_x= myMC_x+10
5,字母的大小写
在 ActionScript中, 只有关键字区分大小写 。 对
于其余的 ActionScript,可以使用大写字母, 也可
以使用小写字母 。 例如, 下面两个语句是等价的 。
fly.gotoAndStop(15);
FLY.gotoAndStop(15);
但是, 遵守一致的大小写约定是一个好的习惯, 这
样, 在阅读脚本代码时更易于区分函数或变量的
名称 。 如,newDate, myColor等 。
6,关键字
在 ActionScript中保留了一些标识符作为
内置对象、函数等的标识。这些标识符就是
关键字,用户在编写脚本代码的过程中,不
能用这些关键字作为变量、函数或自定义对
象的标识,而且在脚本代码中使用关键字,
必须要小写。
例如:在 VAR myage=20;语句中由于关键
字 var写成了大写, Flash在执行时会报错 。
7,注释
在 ActionScript中使用字符, //”来表明其后
的内容为注释内容, 它们在脚本编辑窗口中
以灰色显示, 注释语句不会影响 Flash输出文
件的大小, 只是便于阅读和理解脚本 。 例如:
on (press) {
myDate=new Date(); // 创建新的 Date对象
cu_year= myDate.getYear(); //获取当前日期中的
年份
}
如果不想让某些脚本代码运行, 可以将
其, 注释掉, 。 在命令行的开头添加 /*,
在末尾添加 */形成注释块, 如下代码所示:
/*
with (ball) {
x+=10;
_y+=10;
}
*/
7.3 ActionScript基础
7.3.1 数据类型
数据类型是描述变量或动作脚本元素可以
包含的信息的种类 。 Flash 中内置了两种数
据类型:原始数据类型和引用数据类型 。 原
始数据类型是指字符串, 数字和布尔值, 它
们都有一个常数值, 因此可以包含它们所代
表的元素的实际值 。 引用数据类型是指影片
剪辑和对象, 它们的值可能发生改变, 因此
它们存放对元素的实际值的引用 。 另外, 还
有两类特殊的数据类型:空值和未定义 。
第 7章 动作脚本的使用与提高
1,字符串
字符串是由字母, 数字, 标点符号等组成的
字符序列 。 在 ActionScript中应用字符串时要将
其放在单引号或双引号中 。 例如, 语句
firstname =“Beijing”;
可以使用加法, +”运算符连接或合并两个字
符串 。 ActionScript会将字符串前面或后面的空
格作为该字符串的一部分 。 例如:
firstname=”China”;
greeting=”Welcome to”+firstname;
字符串变量 greeting 的值是:, Welcome to
China”。 字符串是区分大小写的 。 例如:
,welcome”和, WELCOME”是不同的字符串 。
2,数字
数字是双精度浮点数, 可以使用算术运算
符 ( 如,+,-,*,/,%,++,--等 ) 对数
字进行运算, 也可以使用内置的数学对象
Math和 Number类的方法来处理数字 。 例如,
Math.sqrt(36); 指使用 sqrt()( 平方根 ) 方法
返回数字 36的平方根 。
3,布尔值
布尔值是 true或 false中的一个 。 在动作脚本中,
布尔值经常与逻辑运算符或比较运算符一起
使用, 以控制程序流程 。 例如:
onClipEvent (enterFrame) {
if (userName ==false && password == false){
stop( );
}
}
4,对象 ( Object)
对象是属性 (property)的集合 。 每个属性都有
名称和值, 属性值可以是任何的 Flash数据类型,
甚至可以是对象数据类型, 可以使对象相互包
含 ( 即嵌套 ) 。 要指定对象及其属性, 可以使
用点运算符 。 例如, 以下代码中 book 是 desk的
属性, 而 desk又是 house的属性 。
house, desk, book;
此外, 可以使用内置对象来处理和访问特定种类
的信息 。 例如, Math对象具有一些方法, 这些
方法可以对传递给它们的数字执行数学运算 。
例如:
squareRoot=Math.sqrt(81);
动作脚本中 MovieClip对象具有一些方法,
用户可以使用这些方法控制舞台上的影片剪
辑元件实例 。
如:使用 play( ) 和 nextFrame( ) 方法:
mc1InstanceName.play( );
mc2InstanceName.nextFrame( );
用户可以创建自定义对象来组织 Flash 应
用程序中的信息 。 若要使用动作脚本向应用
程序添加交互操作, 将需要许多不同的信息,
例如, 用户的密码, 物体运动的速度, 已加
载的帧数等 。
5,影片剪辑 ( MovieClip)
影片剪辑是 Flash应用程序中可以播放动
画的元件, 是惟一引用图形元素的数据类型 。
影片剪辑类型允许使用影片剪辑类的方法控
制影片剪辑元件 。 可以使用点运算符调用这
些方法, 如下所示:
my_MC.play( );
my_MC.nextFrame( );
6,空值 ( Null)
空值数据类型只有一个 null值, 此值意味
,没有值,, 即缺少数据 。 null 值可以用在
各种情况中 。 下面是一些示例:
?指示变量尚未接收到值
?指示变量不再包含值
?作为函数的返回值, 指示函数没有返回的值
?作为函数的参数, 说明省略了一个参数
7,未定义 ( Undefined)
未 定 义 的 数 据 类 型 有 一 个 值, 即
undefined,用于尚未分配值的变量 。
7.3.2 基本命令
在 Flash MX 2004中, 可用的脚本命令达
上千条, 每条都记住是很困难的 。 本节重点
介绍在动画制作过程中, 常用的一些命令 。
有兴趣的读者可以参考这方面的专著 。
1,stop( 停止 ) 和 play( 播放 ) 命令
在动画播放过程中如果没有特殊的说明,
动画将沿着时间轴面板上的帧播放下去 。 使
用 stop命令停止正在播放的动画 。 当动画被
停止播放之后, 可以使用 play命令使动画继
续播放 。 play命令和 stop命令不带任何参数,
它们的语法格式分别为,stop()和 play()。
2,goto( 跳转 ) 命令
goto是无条件跳转命令 。 在 Flash中它可以
不受约束地跳转到任何场景的任意一帧 。 goto
有两种基本的跳转模式:
gotoAndPlay:是指从当前帧跳转到指定的场景
或帧继续播放 。
gotoAndStop:是指从当前帧跳转到指定的场景
或帧停止播放 。
goto命令的格式为:
gotoAndPlay( 场景,帧 ) 和 gotoAndStop( 场景,
帧 ) 。
场景,表示将跳转到的场景名称;
帧,表示将跳转到该场景的第几帧 。
3,stopAllSounds命令
stopAllSounds命令是指停止动画文件中
当前正在播放的所有声音 。 该命令没有参数,
其语法为 stopAllSounds( ) 。 例如:下面的
代码可以应用到一个按钮, 当单击此按钮时,
将停止动画文件中的所有声音 。
on (release) {
stopAllSounds();
}
4,getURL命令
getURL命令用于设置超级链接, 其语法
形式如下:
getURL(url [,window [,variables]])
参数含义如下:
url:用来设置链接的地址 。
window:可选参数, 设置链接网页的打开方
式, 它有四种方式:, _self”在当前窗口中
打开链接,, _blank”在一个新窗口中打开
链接,, _parent”在父级窗口中打开链接,
,_top”在最上层的窗口中打开链接 。
Variables,用于设置发送变量的 GET或 POST方
法 。 如果没有变量, 则省略此参数 。 GET 方
法将变量追加到 URL的末尾, 该方法用于发送
少量的变量; POST 方法在单独的 http 标头中
发送变量, 该方法用于发送大量的变量 。
在实际运用中, getURL往往与按钮配合使用 。
如:
on (release) {
getURL(“http://www.163.com”,”_blank”);
}
当按下按钮时, 将在一个新的窗口中打开指定
的网页 。
5,fscommand命令
fscommand命令用来与外界进行沟通,
还可以控制 Flash Player播放器 。 其语法
形式为:
fscommand(command,parameters);
l command:是 fscommand命令可以执行的
命令 。
l parameters:是执行命令的参数 。
6,loadMovie命令和 unloadMovie命令
loadMovie命令和 unloadMovie命令是一对
作用相反的命令, 用来实现调入和释放外部
影片 。 它们的语法格式:
(un)loadMovie ( url,level / target [,variables] )
?url,表示要加载或卸载的 SWF文件或 JPEG文
件的绝对或相对路径 。
?target:用于指向目标影片剪辑的路径 。
?level:该参数的值必须为一个整数, 用来指定
播放器中影片将被加载到的级别 。
?variables:可选参数, 用于指定发送变量所使
用的 HTTP方法 。 该参数必须是字符串 GET或
POST。 如没有要发送的变量, 则省略该参数 。
7,setProperty和 getProperty命令
setProperty命令用于设置影片剪辑实例的属
性值 。 getProperty命令用于获取影片剪辑实例
的属性 。 影片剪辑实例的属性包括大小, 位
置, 可见性和透明度等 。
setProperty命令的语法形式:
setProperty(目标, 属性, 值 )
getProperty命令的语法格式:
getProperty(目标, 属性 )
?目标:要设置其属性的影片剪辑的实例名称 。
?属性:要设置的属性 。
?值:属性的设置值 。
8,duplicateMovieClip和 removeMovieClip
命令
使用 duplicateMovieClip命令, 可以
在播放动画时复制一个影片剪辑 。 复制
的影片剪辑将从第一帧开始播放 。 如果
删除父级影片剪辑, 则复制的影片剪辑
也会被删除 。 使用 removeMovieClip命令
可以删除由 duplicateMovieClip命令创建
的影片剪辑实例 。
duplicateMovieClip命令语法格式为:
duplicateMovieClip(target,newname,depth)
l target,要复制的影片剪辑的路径与名称 。
l Newname:复制出来的新影片剪辑的唯一
名称 。
l depth:已复制出来的影片剪辑的唯一深度
级别 。
removeMovieClip命令语法格式为:
removeMovieClip(target)
其中,target指用 duplicateMovieClip()命
令创建的影片剪辑实例的名称。
9,startDrag和 stopDrag命令
使用 startDrag命令, 可以在播放动画时拖动
一个影片剪辑, 并且可以设置对象的拖动范围 。
当对另一个影片剪辑应用 startDrag命令时, 会
停止对当前对象的拖动, 因为一次只能拖动一
个影片剪辑 。 用 stopDrag命令可 停止当前的拖
动操作 。 startDrag命令语法格式为:
startDrag(target,[lock,left,top,right,bottom])
l target,要拖动的影片剪辑的实例名称 。
l lock,一个布尔值, 指定可拖动影片剪辑是
锁定到鼠标位置中央 (true),还是锁定到用户
首次单击该影片剪辑的位置上 (false)。 此参数
是可选的 。
left,top,right,bottom:相对于影片剪辑
父级坐标的值, 这些坐标值指定该影片剪辑的
约束矩形范围 。 这些参数是可选的 。
stopDrag命令语法格式为,stopDrag()
说明:该命令无参数, 其作用是停止当前的
拖动操作 。
例如:在下面的代码中, 按下按钮时, 拖动
影片剪辑;释放按钮, 停止拖动影片剪辑 。
on (press) {
startDrag(this,true); }
on (release) {
stopDrag();
}
10,with命令
With的作用是临时改变语句所起作用的目标 。
Flash MX 2004中允许用户使用 object 参数指定
一个对象 ( 比如影片剪辑 ), 使用 statement(s)
参数计算该对象中的表达式和动作 。 with命令
语法格式为:
with (object) {
statement(s);
}
?object:动作脚本对象或影片剪辑的一个实例 。
?statement(s):包括在大括号中的一个动作或一
组动作 。
例如:下面的代码设置 my_mc 实例的 _x 和
_y 属性, 然后指示影片剪辑 my_mc 转到第 3
帧并停止播放 。
with (my_mc) {
_x = 50;
_y = 100;
gotoAndStop(3);
}
下面的代码显示不使用 with 动作如何编写上面的
代码 。
my_mc._x = 50;
my_mc._y = 100;
my_mc.gotoAndStop(3);
11,_root命令
_root命令用来指定主场景中的实例对
象或变量 。 其语法为,_root.movieClip或
_root.action。 它包含两个参数, 其含义如
下:
l movieClip:是电影剪辑实例名称 。
laction:是指定动作变量的名称 。
12,tell目标命令
tell目标命令用于通知目标对象 。 其语
法格式为, tell target( target), 它包含
一个参数, 其含义是希望通知对象的实
例名称 。
13,ifFrameLoaded命令
ifFrameLoaded命令用来测试影片中
指定的帧是否已经下载完毕 。 其语法格
式为,ifFrameLoaded( 场景, 帧 )
14,onClipEvent命令
onClipEvent命令是 MovieClip的事件触发
程序, 对影片剪辑实例指定的事件发生时响
应 。 其语法格式为:
onClipEvent( movieEvent) ;{
…
}
movieEvent是和影片剪辑实例相联系的一
个动作事件, 它可以是下列值:
l load:影片剪辑实例在时间轴中出现时激活
事件 。
l enterFrame:在播放到某一帧时激活事件 。
l mouseMove:只要鼠标移动就激活事件 。
l mouseDown:鼠标左键按下时激活事件 。
l mouseUp:鼠标左键松开时激活事件 。
l keyDown:当某一键被按下时激活事件 。
l keyUp:当某一键被松开时激活事件 。
l data:在 loadVariables或 loadMovie动作读入
数据时激活事件 。
例如:使用 mouseMove事件, 同时使用 xmouse
和 ymouse属性获取鼠标当前的坐标值 。
onClipEvent( mouseMove) {
stageX=_root.xmouse;
stageY=_root.ymouse;
}
7.3.3 条件循环控制
1,条件控制
条件语句有 3种格式:
格式 1:
if (条件 ) {
动作序列 1
}
?条件, 计算结果为 true或 false的表达式 。
?动作序列:在条件计算结果为 true时, 执行的
一系列命令 。
?执行过程:如果满足条件 ( 结果为 true时 ),
执行动作序列 1;如果条件为 false,则 Flash将
跳过花括号内的语句, 继续运行花括号后面
的语句 。
例如:
inputName=”myName”;
pw=”88888888”;
if (input==inputName &&password==pw) {
gotoAndPlay(play);
}
gotoAndPlay(wrong);
首 先 判 断 给 定 的 条 件 (input==inputName
&&password==pw)是否成立, 若成立将执行
花括号中的语句,gotoAndPlay(play),然后再
执行花括号后面的语句;若条件不成立, 直
接执行 if 语句的后续语句:
gotoAndPlay(wrong)。
格式 2:
if (条件 ) {
动作序列 1
}
else {
动作序列 2
}
?执行过程:首先判断条件是否成立,如果条
件成立执行动作序列 1;条件不成立,则执
行动作序列 2。
例如:
inputName=”myName”;
pw=”88888888”;
if (input==inputName &&password==pw) {
gotoAndPlay(play);
}
else {
gotoAndPlay(wrong);
}
首先判断给定的条件 (input==inputName
&&password==pw)是否成立,成立将执行语
句,gotoAndPlay(play);不成立则执行:
gotoAndPlay(wrong);
格式 3:
if (条件 1) {
动作序列 1
}
else if (条件 2){
动作序列 2
}
……
else if (条件 n){
动作序列 n
}
else {
动作序列 n+1
}
执行过程:先判断条
件 1是否成立, 若值为
true,则 Flash执行动
作序列 1。 若条件 1不
成立, 再判断条件 2是
否成立, 若成立,
Flash执行动作序列 2,
若条件 2不成立, 再判
断条件 3,直至条件 n,
若条件 1至 n都不成立,
那么, Flash 将执行动
作序列 n+1
例如,
inputName=”myName”;
pw1=”88888888”;
pw2=”81111118”;
if (input==inputName &&password==pw1) {
gotoAndPlay(play1); }
else
if (input==inputName &&password==pw2){
gotoAndPlay(play2); }
else {
gotoAndPlay(wrong);
}
2,循环控制
当条件成立时, 将动作重复执行指定的次数 。
while语句的语法格式:
while(条件 ) {
指令体
}
?条件:每次执行 while语句块时都要重新计
算的表达式, 结果为 true或 false。
?指令体:当条件为 true 时要重复执行的指
令序列 。
说明:
执行过程:首先计算条件表达式的值, 若表达
式的值为 true,执行花括号中的指令体 。 再
次判断条件是否成立, 如果条件仍然成立,
再执行指令体, 直到条件表达式不成立为止 。
当条件为 false时, 跳过指令体, 并执行 while
指令体之后的第一条语句 。
例如, 下面的代码段, 将循环执行 5次 。
var i=1;
while (i<=5) {
myMC.duplicateMoiveClip(“newMC”+i,i);
++i;
}
do… while语句的语法格式:
do {
指令体
} while (条件 );
?说明:首先执行指令体, 然后判断循环
条件, 若为 true,则重复执行循环体, 直
到条件为假时退出循环体 。
?do… while 语句与 while语句的区别是:
do… while 语句至少执行一次循环体。
例如, 使用 do… while语句表示上述代码:
var i=1;
do {
myMC.duplicateMoiveClip(“newMC”+i,i);
++i;
}while (i<=5);
for语句的语法格式:
for (初始表达式 ;条件 ;增值表达式 ) {
指令体
}
?说明:首先计算初始表达式,然后判断条件,
若为 true,则执行指令体,之后执行增值表达
式,再判断条件,重复以上过程;若条件表
达式为假,则退出循环体执行其后面的语句。
例如, 用 for表示上面介绍的代码:
for(i=1; i<=5; i++){
myMC.duplicateMoiveClip(“newMC”+i,i);
}
7.3.4 变量、运算符及表达式、函数
1,变量
变量是语句中可以改变的参数值 。 变量是
编写脚本程序时最重要的数据来源, 它是存
储信息的容器, 容器本身绐终不变, 但内容
可以改变 。 在动画播放时, 通过变量可以记
录和保存用户操作的信息, 记录动画播放时
更改的值, 或计算某个条件是真还是假等 。
在动作脚本中首次定义一个变量时,最好
赋给它一个已知的值,称为初始化变量。变
量被赋值时,这个变量的数据类型将被确定。
变量具体的应用,用户可以在后面的实例中
体会。
变量的命名
变量的命名必须遵循以下规则:
?变量名必须是一个标识符 。
?变量名不能是关键字或逻辑常量 。
?变量名在其作用范围内必须是唯一的 。
变量的类型
在 Flash MX 2004的动作脚本中, 给变量赋值
时会自动确定变量的数据类型 。 例如:
myAge=20;
myName=”surry”;
在表达式 myAge=20中,变量 myAge是
数值型变量。在表达式 myName=”surry” 中,
系统将自动把变量 myName的数据类型确定
为字符串型。如果声明了一个变量,但又没
有给变量赋值的话,那么,这个变量不属于
任何类型,在 Flash中它被称为未定义型
( undefined)。
变量的作用范围
变量的作用范围是指能够识别和引用该
变量的区域 。 在动作脚本中可将变量分为全
局变量和局部变量 ( 或称本地变量 ) 。 全局
变量可在所有时间轴中共享;局部变量只在
它所在的代码块内 ( 花括号之间 ) 有效 。 在
动作脚本中使用局部变量可以有效防止变量
名的冲突, 在函数体内使用局部变量会使函
数成为可重用的独立代码段 。 而全局变量通
常用于完成不同代码段之间数据的传递任务,
例如, 要在一个代码块中引用另一个代码块
中的变量, 或者是在整个动画中传递某个变
量的值 。
变量的声明
声明全局变量, 可以使用 set Variables命
令或赋值操作;声明局部变量, 可以在函数
体内使用 var语句 。 局部变量作用范围只限
于它所在的代码块内 。
在动作脚本中使用变量
必须在动作脚本中声明变量,然后才能
在表达式中使用这个变量。如果使用一个未
声明的变量,该变量的值将是 NaN或
undefined,脚本将产生意外的结果。
2,运算符及表达式
运算符是指能够对常量和变量进行运算
的符号 。 在 Flash MX 2004 中提供了大量的
运算符, 如算术运算符, 字符串运算符和逻
辑运算符等 。 如果需要使用运算符, 可以在
一般的函数或语句的 value文本框中直接输
入, 也可以在命令列表窗口中选择 Operators
选项, 在子菜单中双击一个运算符, 添加到
命令编辑窗口中 。
表达式是指将运算符和运算对象连接起
来符合语法规则的式子 。 也可以理解为计算
并能返回一个值的任何语句 。
算术运算符和算术表达式
算术运算符可以执行加、减、乘、
除和其他算术运算。其中增量或减量运
算符最常见的用法是 i++,++i或 i--,--i。
算术表达式是将算术运算符和括号将运
算对象连接起来的符合语法规则的式子。
运算符 执行的运算 运算符 执行的运算
+ 加法 - 减法
* 乘法 / 除法
% 求模 ++ 递增
-- 递减
数值运算符
比较运算符和比较表达式
比较运算符用于比较两个表达式的值,
然后返回一个布尔值( true 或 false)。比较
运算符最常用于条件语句和循环语句中。
运算符 执行的运算 运算符 执行的运算
> 大于 < 小于
>= 大于或等于 <= 小于或等于
比较运算符
逻辑运算符和逻辑表达式
逻辑运算符是对布尔值 ( true或 false) 进
行比较, 然后返回第三个布尔值 。
逻辑运算符和操作数连在一起形成逻辑
表达式。在逻辑表达式中当两个操作数都为
true时,逻辑与表达式才为真,否则全为假;
当两个操作数都为 false时,逻辑或表达式才
为假,否则全为真。
运算符 执行的运算 运算符 执行的运算
&& 逻辑“与” || 逻辑“或”
! 逻辑“非”
逻辑运算符
赋值运算符和赋值表达式
可以使用赋值运算符 ( =) 为变量赋值 。
赋值运算符将变量和表达式连接起来形成赋
值表达式 。 例如,myage=18;
还可以使用赋值运算符在一个表达式中给
多个变量赋值, 例如,a=b=c=6;
运算符 执行的运算 运算符 执行的运算
= 赋值 += 相加并赋值
-= 相减并赋值 *= 相乘并赋值
/= 相除并赋值 %= 求模并赋值
<<= 按位左移位并赋值 >>= 按位右移位并赋值
>>>= 右移位填零并赋值 &= 按位“与”并赋值
|= 按位“或”并赋值 ^= 按位“异或”并赋值
赋值运算符
等于运算符和等于表达式
等于运算符 ( ==) 可以确定两个操作数的值或
标识是否相等并返回一个布尔值 。 如果操作数为
字符串, 数字或布尔值, 它们将通过值进行比较 。
如果操作数为对象或数组, 它们将通过引用进行
比较 。 等于运算符和操作数连在一起形成等于表
达式 。 例如,if (n==100)。
如果将表达式写成,n=100,则是错误的 。 该
表达式完成的是赋值操作而不是比较操作 。
完全等于运算符( ===)与等于运算符( ==)
相似,但有区别:完全等于运算符不执行类型转
换。如果两个操作数属于不同的类型,完全等于
运算符会返回 false。不完全等于运算符( !==)
会返回完全等于运算符的相反值。
运算符 执行的运算 运算符 执行的运算
== 等于 != 不等于
=== 完全等于 !== 完全不等于
相等运算符
提示,当在同一语句中使用两个或多个运算符
时,动作脚本按照标准的等级来决定哪一个运
算符优先执行。
3,函数
函数是一种一次编写后可以在动画文件
中反复使用的脚本代码块 。 如果将值当作
参数传递给函数, 该函数将对这些值执行
运算 。 函数也可以返回值 。
动作脚本中的函数包含内置函数和自定
义函数两大类 。
内置函数
内置函数就是动作脚本中已经定义好的
函数, 用户可直接使用这些函数 。 用户可以
在, 动作, 面板的, 全局函数, 类别中找到
Flash提供函数 。
若要调用函数, 只需使用函数名称并传递
所有必需的参数即可, 例如:
isNaN(someVar);
getTimer();
eval(“someVar”);
自定义函数
自定义函数是由用户根据需要自已定义
的函数 。 在 Flash中, 允许用户创建自定义
函数来执行一系列语句, 对传递过来的值进
行操作, 并可以返回值 。 在自定义函数中,
最好对它的输入, 输出和用途作详细的注释,
以便于用户的理解和使用 。 函数定义好以后,
就可以从任意一个时间轴中调用它 。
( 1) 定义函数
函数和变量一样, 都附加在定义它们的
影片剪辑的时间轴上, 调用时必须使用目标
路径才能调用它们 。 要定义一个时间轴函数,
可以使用 function 动作, 后跟一个函数名,
要传递给该函数的参数以及指定函数用途的
动作脚本语句 。
例如, 定义一个求圆面积的函数, 函数名
为 areaOfCircle,函数所带参数为 radius:
function areaOfCircle (radius) {
return Math.PI*radius*radius;
}
( 2) 将参数传递给函数
参数是函数对其执行代码的元素 。 例如,
下面的函数有两个参数 initials和 finalScore。
function scorecard(initials,finalScore) {
card.display = initials;
card.score = finalScore;
}
在调用函数时, 需将必需的参数传递给函
数 。 函数会用传递的值替换函数定义中的参
数 。 下面的函数调用会把值 "Jeb" 赋给变量
display,并把值 100赋给变量 score。
scorecard("Jeb",100);
( 3) 从函数中返回值
通常希望定义的函数能返回一个确定的值,
使用 return 语句可以从被调函数中返回值 。
在函数中使用 return 语句应遵守以下规则:
? 若需要被调函数返回一个值, 必须在被调
函数中加入一条 return 语句 。
?如果被调函数中没有 return语句, 函数将返
回一个不确定的值 。
?若不需要被调函数返回值, 使用, void”定
义无类型, 并且不要加入 return 语句 。
( 4) 调用自定义函数
可以使用目标路径从任何时间轴调用函
数, 如果函数是使用 _global标识符声明的全
局函数, 则无需使用目标路径即可调用函数 。
若要调用函数,可以输入函数名称的目
标路径,若带有参数,还应在括号内传递所
有必需的参数。例如,下面的语句将在主时
间轴上调用影片剪辑 mymc中的函数 abc(),
向其传递参数 5,然后将结果存储在变量
wab中,var wab=_root.mymc.abc(5);
请进入 Flash窗口通过实例介绍函数的具
体应用 。
7.4 编写和调试脚本
在 Flash MX 2004 中, 用户可以将编写的
脚本嵌入到 FLA文件中, 也可以在计算机上
存储为外部文件, 这样便于在多个 FLA文件
中重用代码 。
要编写嵌入的脚本, 可以使用, 动作, 面
板并将该动作附加到某一按钮或影片剪辑,
或者附加到时间轴的一个帧中 。 要编写外部
脚本文件, 可以使用任何文本编辑器或代码
编辑器 。
要测试脚本, 可以使用 Flash Player的专
用调试版本来帮助排查故障 。
第 7章 动作脚本的使用与提高
7.4.1使用动作面板和脚本窗口
“动作”面板是 Flash MX 2004提供编
辑动作脚本的专用环境,在 Flash MX
2004中,取消了用于编辑简单命令的普
通模式,对“动作”面板的功能进行了
扩充和增强,在代码输入的过程中提供
代码提示功能,使用“动作”面板仍然
可以方便地进行脚本编写和修改操作。
1,使用, 动作, 面板
单击, 窗口, →, 开发面板, →, 动作,
命令, 或者按下 〈 F9〉 键打开如下图所示
的, 动作, 面板 。
脚本导航器
动作工具箱
工具栏
动作编辑区
“动作”面板界面
?动作工具箱:包含了所有的动作脚本命令和
相关的语法 。 图标是命令夹, 单击打开命令
夹, 双击它或者用鼠标拖动它到动作编辑区 。
?脚本导航器:在动作工具箱的下方显示用户
正在进行添加的命令或脚本的位置 。 如果单
击脚本导航器中的某一项目, 则与该项目关
联的脚本将出现在, 脚本, 窗格中, 并且播
放头将移到该位置 。 如果双击脚本导航器中
的某一项, 则该脚本会被固定 。
?动作编辑区:是进行动作脚本输入, 编辑的
主要区域 。 针对当前对象脚本代码的多少可
调整该区域的大小 。
?工具栏:含有常用的功能按钮 。
2,使用, 脚本, 窗口
在 Flash MX 2004中, 可直接在, 动作, 面
板中输入添加脚本代码, 脚本代码是嵌入在动
画文件中的 。 在 Flash Professional 2004 中,
可以使用, 脚本, 窗口添加脚本代码 。 在, 脚
本, 窗口中输入的脚本代码是以脚本文件 (AS)
形式保存的, 在动画文件中, 可以使用
#include 语句来访问存储在外部的脚本代码文
件 。
选择, 文件, →, 新建, →, 动作脚本文
件,, 或者选择, 文件, →, 打开,, 打开现
有 AS 文件的同时打开, 脚本, 窗口 。
不管是使用, 动作, 面板还是使用, 脚本,
窗口, 它们均使用相同的动作脚本编辑器 。
1,语法突出显示
在动作脚本中, 如果
使用了错误的动作脚本,
脚本将不会运行 。 用户
可以选择, 编
辑, →, 首选参数, 命
令打开如右图所示的
,首选参数, 对话框 。
7.4.2 使用动作脚本编辑器
“首选参数”对话框
2,编写触发代码提示的代码
使用动作脚本编辑器, Flash可以检测到正在
输入的动作并显示代码提示, 即包含该动作完
整语法的工具提示, 或列出可能的方法或属性
名称的弹出菜单 。
使用动作脚本 2.0,可以精确键入基于内置类
( 如,Button,Array等 ) 的变量, 这样可以使
动作脚本编辑器显示该变量的代码提示 。 例如:
var mames:Array=new Array();
names.
只要加入句点,,”,Flash就会显示可用于 Array对
象的方法和属性的列表, 因为已经将该变量的
类型指定为数组 。
3,检查语法
使用动作脚本编辑器编辑动作脚本时, 要检
查当前的脚本中是否存在语法错误, 用户可以
在动作脚本输入完成之后 ( 或对其中一部分脚
本 ), 单击动作编辑区上方的, 语法检查, 按
钮, 若脚本中没有语法错误, 则系统将显示
,此脚本中没有错误, 信息框;若脚本中有语
法错误, 系统会提示脚本有错误, 并在, 输出,
窗口显示错误的信息 。
另外, 用户还可以在动画制作完成后, 通
过, 窗口, →, 测试影片, 命令测试动画效果
的过程中检查动作脚本代码, 代码中的语法错
误将列在, 输出, 面板中 。 用户还可以检查代
码块两边的小括号, 花括号或中括号是否齐全 。
4,设置代码格式
设置格式选项
在设置“自动套用格式选项”后,设置将自
动应用于编写的代码,但不应用于现有代码。要
将所作设置应用于现有代码,用户必须手动操作。
使用自动缩进
在默认情况下自动缩进功能是打开的 。 在, (,
或, {”之后键入的文本将按照动作脚本首选参数
中的, 制表符大小, 设置自动缩进 。 要关闭自动
缩进, 在动作脚本首选参数中取消选择, 自动缩
进, 。
启用或禁用行号和自动换行
单击按钮, 在, 视图选项, 弹出菜单中, 启
用或禁用, 查看行号, 和, 自动换行, 。
7.4.3 调试脚本
脚本代码输入完成后, 必须对所输入的脚
本代码进行调试, 以便于发现脚本中是否存
在错误, 调试脚本通常使用以下两种方法 。
1,使用, 调试器, 面板
可使用系统提供的, 调试器, 来查找运
行动画文件时出现的错误 。 用户可以在测试
模式下对本地文件进行调试, 也可以对远程
服务器上的文件进行调试 。 使用, 调试器,
可在播放动画文件时显示和修改变量和属性
的值, 可以在动作脚本中设置断点 。 断点会
停止动画播放并跟踪代码, 然后回到脚本中
进行修改 。
2,使用, 输出, 面板
在调试脚本的过程中, 通常使用, 输出,
面板和 trace 语句完成脚本调试工作 。
若影片在编辑环境中, 可以选择, 控
制, →, 测试影片, 命令, 进入影片测试环
境, 选择, 窗口, →, 输出, 命令, 即可显
示, 输出, 面板, 如果影片中的动作脚本存
在语法错误, 将在, 输出, 面板中提示脚本
出错的位置和原因 。
7.5.1 事件
事件是触发动作的信号 。 用户单击鼠标,
按下键盘上某个按键都会产生一个事件, 这
些类型的事件通常称作用户事件 。 由播放器
自动产生的事件称作系统事件 。
在动画文件中, 为使应用程序能够对事
件做出反应, 必须使用事件处理函数 。
动作脚本提供了几种不同的方法来处理
事件, 下面重点介绍使用按钮和影片剪辑事
件处理函数的方法 。
7.5 事件与动作
第 7章 动作脚本的使用与提高
1,使用按钮事件处理函数
on()事件处理函数可以直接将事件处理函
数附加到按钮实例,并指定触发动作的鼠标
事件或按键事件。选中按钮,选择“全局函
数” →,影片剪辑控制” →, On”,将弹出如
下图所示的菜单。
On命令菜单
菜单中各个命令的含义如下:
?press:当鼠标指针移动到按钮上并按下鼠
标按键时, 就会触发指定的动作 。
?release:当单击按钮并释放鼠标按键时, 就
会触发指定的动作 。
?releaseOutside,当按下按钮后, 将鼠标指
针移到按钮之外时释放鼠标按键, 就会
?触发指定的动作 。
?rollOut:鼠标指针滑出按钮区域, 就会触发
指定的动作 。
?rollOver:鼠标指针由按钮外移动到按钮内
时, 就会触发指定的动作 。
?dragOut:当鼠标指针滑过按钮时按下鼠标
按钮, 然后滑出此按钮区域, 就会触发
?指定的动作 。
?dragOver:当鼠标指针移动到按钮上并按下
鼠标左按钮, 然后滑出此按钮范围, 再
?滑回此按钮之上, 就会触发指定的动作 。
keyPress:按下键盘上指定的键时, 就会触
发指定的动作 。
2,使用影片剪辑事件处理函数
使用 onClipEvent()事件处理函数可直接将
事件处理函数附加到影片剪辑实例中 。 选中
影片实例, 在, 动作, 面板中选择, 全局函
数, →, 影片剪辑控制, →, onClipEvent”命
令, 弹出如下图所示的菜单 。
onClipEvent命令菜单
影片剪辑元件实例的事件源含义如下,
?load,当影片剪辑实例载入时间轴时产生这
个事件 。
?unload,从时间轴上卸载了影片剪辑之后,
就发生该事件 。
?EnterFrame:一旦影片剪辑的播放指针进入其
时间轴的每一帧, 就发生这个事件 。
?mouseMove,在场景中移动鼠标时发生这个
事件 。
?MouseDown:当按下鼠标左键时发生这个事
件 。
?mouseUp,当释放鼠标左键时发生这个
事件 。
?keyDown,当按下键盘上的某个键时发
生这个事件 。
?KeyUp:当释放键盘上的某个键时发生
这个事件 。
?Data:当影片剪辑实例使用 loadVariables()
或 loadMovie() 动作接收数据时发生这个
事件 。
7.5.2 动作
动作是由一条或多条的命令语句组成的程序
代码 。 动画的交互性是通过对按钮, 关键帧或
影片剪辑设置一定的动作实现的, 分别称为帧
动作, 按钮动作及影片剪辑动作 。
1,设置帧动作
将动作添加到指定的关键帧上,设置了动
作的帧上将出现一个小写的字母 a,当动画播
放到该帧时会自动执行预设的动作。典型的应
用的就是控制动画的播放和结束时间。为便于
动作脚本的查看和修改,最好将帧动作放在一
个单独的层上。
请在 Flash窗口中介绍设置帧动作的方法。
2,设置按钮动作
设置按钮动作, 是制作交互动画时最基础
也最实用的功能 。 按钮动作的触发事件可以
是鼠标的不同状态, 如:鼠标滑过按钮, 按
钮被按下或者是按下键盘上的某个键等 。 每
个按钮实例上的动作是独立的, 不会相互影
响 。
设置按钮动作时,必须使用 on()事件处理
函数;用以指定触发动作的鼠标事件或按键
事件。
请进入 Flash窗口说明设置按钮动作的具体
操作方法。
3,设置影片剪辑动作
影片剪辑是 Flash MX 2004中最重要的
对象之一。它拥有自已的时间轴,每个影片
剪辑都有自已唯一的名字。为影片剪辑设置
动作并指定触发事件后,当事件发生时就会
执行设置的动作。
设置影片剪辑动作时,因为要响应不同
的触发事件,所以必须使用 onClipEvent()事
件处理函数。
请进入 Flash窗口通过实例来说明设置影
片剪辑动作的方法。
7.6 动作脚本的提高
7.6.1 建立面向对象的动作脚本
,对象, 指的是具有一定功能的程序与数据
的集合, 如 ActionScript中的按钮图符就是对
象 。 讲到对象就必须提到类, 因为类是建立对
象的模型, 对象是类的实例 。 对象与它的类之
间的关系类似于房子与建筑图纸之间的关系 。
有两种方法创建对象:
?使用, new”操作符, 从预定义对象类或自定义
对象类创建对象 。
?使用对象初始化操作符, {}”来创建类形式对象 。
第 7章 动作脚本的使用与提高
7.6.2 使用预定义对象
1,使用 Array( 数组 ) 对象
数组对象是一种使用频率比较高的内置
对象,常使用 new Array()直接实例化一个
数组对象,所有数组都从 0开始,即数组中
的第一个元素为 [0],第二个元素为 [1],依
次类推。
2,使用 Date( 日期 ) 对象
Date对象从正在播放影片的计算机系统
时钟获取日期和时间信息。为使用 Date 对
象,必须使用构造函数 new Date()创建一个
Date 对象实例。
3,使用 Color( 颜色 ) 对象
在 Flash MX 2004中,使用颜色对象的
方法可以调整影片剪辑的颜色。 setRGB方
法可把十六进制的 RGB(红、绿、蓝)值
赋给对象,而 setTransform方法则用来设置
RGB的百分比和补偿值以及一种颜色的透
明度。
4,使用 Sound( 声音 ) 对象
在 Flash MX 2004中, 使用声音对象可以
控制影片中的声音 。 在调用 Sound对象的方
法之前, 必须使用构造函数 new Sound创建
一个新的 Sound对象实例 。
5,使用 Key( 键盘 ) 对象
Key对象是不需要构造函数创建对象实
例即可使用其方法和属性的对象。使用 Key
对象的方法可生成用户能够通过标准键盘控
制的界面。 Key对象的所有属性都是常量,
都必须要大写。 Key.getCode()方法常用在
onClipEvent事件处理程序中。
6,使用 Mouse( 鼠标 ) 对象
Mouse对象在影片中提供对鼠标的控制 。
Mouse对象不需要构造函数创建对象实例即
可访问其属性和方法 。 默认情况下鼠标指针
是可见的, 使用 Mouse 对象的方法可以实
现隐藏和显示影片中的鼠标指针 ( 光标 ),
也可以实现用影片剪辑创建的自定义指针 。
它有两种格式:
Show方法,Mouse.Show(); //显示鼠标指针,
Hide方法,Mouse.Hide(); //隐藏鼠标指针,
7,使用 MovieClip( 影片剪辑 ) 对象
Flash 影片中的每个影片剪辑均是
MovieClip 对象的实例 。 用户可以使用此对
象的方法和属性控制影片剪辑对象实例 。
MovieClip 对象的方法提供的功能与定位影
片剪辑的动作所提供的功能相同 。 不需使用
构造函数方法即可调用 MovieClip 对象的方
法, 只需使用以下语法按名称引用影片剪辑
实例即可:
my_mc.play();
my_mc.gotoAndPlay(3);
7.6.3 使用自定义对象
1,创建自定义对象
一个对象包含了很多属性, 每一个属性都有
自 已 的 名 称 和 属 性 值 ( 属 性 值 可 以 是
ActionScript支持的任何数据类型 ), 这些属性
可以接收值或通过一定的方法改变其值 。
利用构造函数创建一个类, 可以使用 new将
对象实例化, 这有助于重复使用代码, 减少文
件的数据量 。 定义一个构造器函数格式:
function functionname ([argument0,argument1,
argument2,…,argumentN]) {
statement(s);
}
可以使用构造器函数体中的关键字 this来
引用该构造器创建的对象 。 调用构造器函数
时, Flash会将 this作为隐藏参数传递 。 例如,
创建一个构造器函数 Book,它具有 width、
height和 area属性, 脚本代码如下:
function Book(width,height) {
this,width= width;
this,height= height;
this.area= this.width* this,height;
}
定义完构造器函数之后, 可以通过关键字
new来实例化对象 。 例如, 下面的代码将使
用 new运算符创建一个新的 Book对象的实例,
并将参数传递给它 。
var newBook(20,50);
创建完 Book对象实例后, 就可以使用该对象的
属性了 。 例如,
var x=newBook,width; //变量 x的值为 20.
var y=newBook,height ; //变量 y的值 50.
var s=newBook,area; //变量 s的值 1000.
2,对象属性的继承
每个构造器函数都有一个 _prototype属性, 它
是在定义该函数时自动创建的, 该属性代表用该
函数创建的对象的默认属性值 。 当使用一个对象
去创建另一个对象值的时候, 这个对象的所有属
性和方法都可以通过 _prototype属性被新的对象
继承, 继承的关系是根据一定的层次关系处理的 。
调用一个对象的属性和方法时, 系统首先在对象
中搜索该对象的属性或方法是否存在, 如果不存
在, 则会自动通过 _prototype属性在所继承的对
象中寻找属性或方法是否存在 。 如果这些属性或
方 法 不 属 于 所 继 承 的 对 象, 则 会 通 过
object_prototype属性再到所继承的对象中寻找 。
3,创建自定义对象的方法
可以按照下列方法创建自定义对象, 操作步
骤如下:
1) 首先定义一个构造器函数 。 下面的脚本代
码是用来创建一个构造器函数 circle。
function circle(radius) {
this,radius,radius;
}
2) 定义 circle对象的方法 。 下面的脚本代码是
为 circle定义一个求面积的方法 。
circle,prototype.area= function ( ) {
return Math.PI* this,radius *this,radius;
}
3) 使用 new实例化一个对象 。 下面是实例化
一个 circle对象的脚本代码 。
var new_circle=new circle (10 );
4) 创建调用实例的方法 。 下面的脚本代码是
调用 circle对象的方法:
var new_circleArea=new_circle.area ( );
7.7 用动作脚本创建界面元素
7.7.1创建表单
表单是交互的高级应用, 一般由按钮,
影片剪辑实例和文本框组成 。 通过表单可以
将信息发送到远程服务器上 。 常见的表单元
素, 如单选按钮, 复选框, 下拉列表框等都
可以创建成按钮或影片剪辑实例 。 利用这些
界面元素可以创建调查表, 用户定单或搜索
界面等, 这样就可以利用这些 Flash表单收
集地址信息并发送到别的应用程序中, 然后
将这些信息编译成电子邮件或数据库文件 。
第 7章 动作脚本的使用与提高
构成表单的元素可分为两类, 一类是构
成表单的外观元素, 另一类是服务器应用程
序或客户端脚本, 它们的作用是处理用户输
入的信息 。
在许多网站都提供了网站的登录入口,
用户需要输入正确的用户名和密码才能登录
网站, 否则不能登录网站 。
请进入 Flash窗口通过, 用户登录系统,
介绍创建表单的方法 。
7.7.2 创建弹出式菜单
在许多网站的导航菜单中使用了类似
Windows菜单的效果 。 在 Flash中可以制作类
似的菜单效果 。
在创建弹出式菜单时,有两点需要注
意:一是在设置弹出菜单所包含的所有按钮
的属性时,一定要选中“属性”面板中的
Track As Menu项,这样菜单中的所有按钮
都能接受到鼠标事件。二是把弹出菜单展开
时所占的区域用一个大的按钮包围起来,该
按钮用于当鼠标指针移出菜单区域且按钮被
释放时使菜单收回。
请进入 Flash通过实例详细介绍具体方法。
7.8 应用实例
7.8.1 鼠标跟随特效
当鼠标在舞台上拖动时,会随着鼠标的
移动产生一个兰色的方块,方块慢慢放大并
逐渐消失,效果如下图所示。 请在 Flash窗口
中进行详细介绍。
鼠标跟随效果图
第 7章 动作脚本的使用与提高
7.8.2 拼图游戏
游戏主界面的左侧是分割并被打乱顺序
的图案,右侧是拼图的目标区域。游戏要求
将左边的图案碎块分别拖放到右边的小方格
中,若能组成一幅完整的图案,则游戏成功。
效果如下图所示。
游戏主界面 拼好后的效果图
本章习题与实验指导
本章习题,见书中 第 189页
实验指导,见书中 第 190页
第 7章 动作脚本的使用与提高
Thank you very much!
本章到此结束。
谢谢您的光临!