《FLASH动作脚本AS》由会员分享,可在线阅读,更多相关《FLASH动作脚本AS(85页珍藏版)》请在金锄头文库上搜索。
1、第十二讲第十二讲 FLASH动作脚本动作脚本AS12.1 ActionScript编程简介编程简介 12.2 ActionScript指令指令 12.3 ActionScript函数函数 12.4 简单简单Action范例范例网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.1 动作脚本简介动作脚本简介12.1.2 什么是什么是ActionScript 动作脚本是Macromedia Flash MX的脚本撰写语言,它使我们可以向影片添加交互性设置。动作脚本提供了一些元素,例如动作、运算符以及对象,可将这些元素组
2、织到脚本中,指示影片要执行什么操作。我们可以对影片进行设置,从而使单击按钮和按下键盘键之类的事件可触发这些脚本。例如,可用动作脚本为影片创建导航按钮。和其他脚本撰写语言一样,动作脚本遵循自己的语法规则,保留关键字,提供运算符,并且允许使用变量存储和获取信息。动作脚本包含内置的对象和函数,并且允许我们创建自己的对象和函数。动作脚本的语法和风格与JavaScript的语法和风格很相似。FlashMX能够识别在任何较早版本的Flash中编写的动作脚本。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.1.2 使用脚本编辑面板使用脚本编辑面板如图12-1所示,可通过直接在“动作”面板
3、右侧的脚本窗格中输入动作脚本来创建脚本。我们可在脚本窗格中直接编辑动作、输入动作的参数或者删除动作,这和在文本编辑器中创建脚本很相似。也可用“动作”工具箱(在“动作”面板左边)和添加(+)按钮来向脚本窗格添加动作。可以用脚本窗格上方的按钮来查找和替换文本、设置和删除调试断点、查看行号以及插入目标路径。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS图12-1专家模式网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.1.3 帧脚本及其实例帧脚本及其实例要使影片在播放头到达时间轴中的一帧时执行某项动作,应为该帧指定一项动作。例如,要在时间轴的第20帧和第10帧之间创
4、建一个循环,应向第20帧添加将播放头发送给第10帧的动作:gotoAndPlay(10)。有些动作通常指定给影片的第一帧,例如,定义函数和设置创建影片初始状态的变量的那些动作。通常,可为第一帧指定影片开始时要执行的任何动作。在名为“动作”的层中放置所有的帧动作是一种很好的做法。这样,总可以在时间轴中找到这些动作。一旦指定了一项动作,请测试影片看它是否工作。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS为帧指定动作的步骤如下:(1)选择时间轴中的关键帧,然后选择“窗口”“动作”,或按下F2键。如果选定的帧不是关键帧,动作将被指定给前一个关键帧。(2)要指定动作,请执行以下操作之一
5、:单击“动作”工具箱(在“动作”面板的左侧)中的文件夹来打开它,再双击某个动作将其添加到脚本窗格(在面板的右侧)中。从“动作”工具箱中把动作拖到脚本窗格中。单击添加(+)按钮并从弹出菜单中选择一个动作。使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS(3)在文本框中根据需要输入动作的参数。(4)要指定其他的动作,重复步骤(2)和步骤(3)。具有动作的帧在时间轴中显示一个小a,如图12-3所示。图12-3帧动作的标志网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.1.4 按钮符号脚本及其实例按钮符号脚本及其实例在
6、单击或滑过按钮时要让影片执行某个动作,可为按钮指定动作。必须将动作指定给按钮的一个实例,当然该元件的其他实例的此动作不受影响。当我们为按钮指定动作时,必须将动作嵌套在on处理函数中,并指定触发该动作的鼠标或键盘事件。在标准模式下为按钮指定动作时,会自动插入on处理函数,然后可从列表中选择一个事件,也可用动作脚本Button对象的事件在发生按钮事件时执行脚本。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS为按钮指定动作的具体步骤如下:(1)选择一个按钮,如果“动作”面板没有打开,选择“窗口”“动作”打开它。或者,从“动作”面板跳转菜单中选择按钮或者影片剪辑的实例,如图12-4所示
7、。图12-4动作按钮编辑窗口(标准)网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS(2)从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定动作:单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。把动作从“动作”工具箱拖到脚本窗格中。单击添加(+)按钮,然后从弹出菜单中选择一项动作。使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。(3)在面板顶部的参数文本框中,根据需要输入动作的参数。(4)重复步骤(2)和步骤(3),根据需要指定其他动作。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.1.5 电影片
8、段符号脚本及其实例电影片段符号脚本及其实例通过为影片剪辑指定动作,可在影片剪辑加载或接收到数据时让影片执行动作。这样,必须将动作指定给影片剪辑的一个实例,当然该元件的其他实例不受此动作的影响。为影片剪辑指定动作时,必须将动作嵌套在onClipEvent处理函数中,并指定触发该动作的剪辑事件。在标准模式下为影片剪辑指定动作时,将自动插入onClipEvent处理函数。我们可从列表中选择事件,也可用动作脚本MovieClip对象和Button对象的事件来执行脚本。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS为影片剪辑指定动作的具体步骤如下:(1)选择影片剪辑实例,然后选择“窗口”
9、“动作”,如图12-5所示。图12-5为影片剪辑指定动作的编辑窗口(标准)网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS(2)从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定的动作:单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。把动作从“动作”工具箱拖到脚本窗格中。单击添加(+)按钮,然后从弹出菜单中选择一项动作。使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。(3)在面板顶部的参数框中,根据需要选择动作的参数。(4)重复步骤(2)和步骤(3),根据需要指定其他动作。网页开发工具网页开发工具第十二讲第十二讲 动作
10、脚本动作脚本AS12.2.1 动作脚本术语动作脚本术语和任何脚本撰写语言一样,动作脚本使用自己的术语。动作是在播放影片时指示影片执行某些任务的语句。例如,gotoAndStop将播放头放置到特定的帧或标签上。下面将介绍动作脚本术语。1布尔值布尔值布尔值是true或false值。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.2 ActionScript指令指令 2类类类是可以创建的用于定义新类型对象的数据类型。要定义类,需要创建一个构造器函数。3常数常数常数是不变的元素。例如,常数Key.TAB的含义始终不变,它代表键盘上的Tab键。常数对于比较值很有用。网页开发工具网页开
11、发工具第十二讲第十二讲 动作脚本动作脚本AS4构造器构造器构造器是用于定义类的属性和方法的函数。例如,下面的代码通过创建名为Circle的构造器函数创建了一个新的Circle类。functionCircle(x,y,radius)this.x=x;this.y=y;this.radius=radius;网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS5数据类型数据类型数据类型描述变量或动作脚本元素可以存储的信息种类。有两种数据类型:原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值,它们都有一个常数值,因此可以包含它们所代表的元素的实际值。引用数据类型是指影片的剪辑
12、和对象,它们的值可能发生更改,因此它们包含对该元素的实际值的引用。动作脚本数据类型包括字符串、数字、布尔值、对象、影片剪辑、函数、空值和未定义。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS6事件事件事件是在影片播放时发生的动作。例如,在以下情况时会产生不同的事件:加载影片、播放头进入帧、用户单击按钮或影片剪辑、用户通过键盘键入等。7事件处理函数事件处理函数事件处理函数是管理诸如mouseDown或load等事件的特殊动作。动作脚本事件处理函数共有两类:动作和方法。但事件处理函数的动作只有两个,即on和onClipEvent。在“动作”工具箱中,每个具有事件处理函数方法的动作脚
13、本对象都有一个名为“事件”的子类别。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS8表达式表达式表达式是代表值的动作脚本元件的任意合法组合。表达式由运算符和操作数组成。例如,在表达式x+2中,x和2是操作数,而+是运算符。9函数函数函数是可以传递参数并具有返回值的可重复使用的代码块。例如,可以通过向getProperty函数传递影片剪辑的实例名和属性名,然后它会返回相应的属性值。getVersion函数会返回当前正在播放影片的FlashPlayer的版本。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS10标识符标识符标识符是用于表明变量、属性、对象、函数或方法的
14、名称。它的第一个字符必须是字母、下划线(_)或美元记号($),其后的字符必须是字母、数字、下划线或美元记号。例如,firstName是变量的名称。11实例实例实例是属于某个类的对象。类的每个实例包含该类的所有属性和方法。所有影片剪辑都是具有MovieClip类的属性(例如_alpha和_visible)和方法(例如gotoAndPlay和getURL)的实例。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12实例名称实例名称实例名称是在脚本中用来代表影片剪辑和按钮实例的惟一名称。可以使用属性检查器为舞台上的实例指定实例名称。例如,库中的主元件可以称为counter,影片中该元件
15、的两个实例可以使用实例名称scorePlayer1和scorePlayer2。下面的代码用实例名称设置每个影片剪辑实例中称为score的变量:_root.scorePlayer1.score+=1;_root.scorePlayer2.score?=1;网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS13关键字关键字关键字是有特殊含义的保留字。例如,var是用于声明本地变量的关键字。不能使用关键字作为标识符。例如,var不是合法的变量名。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS 14方法方法方法是分配给对象的函数。分配函数之后,可以将其作为该对象的方法进行调
16、用。例如,下面的代码表示使clear成为controller对象的方法:functionreset()this.x_pos=0;this.y_pos=0;controller.clear=reset;controller.clear();网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS15对象对象对象是属性和方法的集合,每个对象都有自己的名称,并且都是特定类的实例。内置对象是在动作脚本语言中预先定义的。例如,内置的Date对象可以提供系统时钟的信息。16运算符运算符运算符是通过一个或多个值计算新值的术语。例如,加法(+)运算符可以将两个或多个值相加到一起,从而产生一个新值。运算符
17、处理的值称为操作数。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS17参数参数参数(也称为参量)是用于向函数传递值的占位符。例如,下面的welcome函数使用它在参数firstName和hobby中接收到的两个值。functionwelcome(firstName,hobby)welcomeText=Hello,+firstName+Iseeyouenjoy+hobby;网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS18属性属性属性是定义一个对象的属性。例如,_visible是定义是否隐藏影片剪辑的属性,所有影片剪辑都有此属性。网页开发工具网页开发工具第十二讲第
18、十二讲 动作脚本动作脚本AS19目标路径目标路径目标路径是影片中影片剪辑实例名称、变量和对象的分层结构地址。我们可以在影片剪辑属性检查器中对影片剪辑实例进行命名。同时,可以使用目标路径引导影片剪辑中的动作来获得或设置变量的值。例如,下面的语句是指向影片剪辑stereoControl内的变量volume的目标路径(主时间轴的名称始终主时间轴的名称始终为为_root。):_root.stereoControl.volume网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS20变量变量变量是保存任何数据类型的值的标识符。可以创建、更改和更新变量,也可以获得它们存储的值以在脚本中使用。在下
19、面的示例中,等号左侧的标识符是变量:x=5;name=Lolo;customer.address=667thStreet;c=newColor(mcinstanceName);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.2.2 动画控制指令动画控制指令如果要跳到影片中的某一特定帧或场景,可以使用goto动作。当影片跳到某一帧时,可以选择参数来控制是从这新的一帧播放影片(默认设置)还是在这一帧停止。在专家模式下,goto动作在“动作”工具箱作为两个动作列出:gotoAndPlay和gotoAndStop。影片也可以跳到一个场景并播放指定的帧,或跳到下一场景或上一场景的第一
20、帧。除非另有命令指示,否则影片一旦开始播放,它就要把时间轴上的每一帧从头播放到尾。可以通过使用play和stop动作来开始或停止播放影片。例如,可以使用stop动作在某一场景结束并在播放下一场景之前来停止播放影片。一旦停止播放,必须通过使用play动作来明确指示要重新开始播放影片。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS可以使用play和stop动作来控制主时间轴或任意影片剪辑或已加载影片的时间轴。要控制的影片剪辑必须有一个实例名称,而且必须显示在时间轴上。如果要在浏览器窗口中打开网页,或将数据传递给所定义URL处的另一个应用程序,可以使用getURL动作。例如,可以有一
21、个链接到新Web站点的按钮,它可以将数据发送到CGI脚本,以便如同在HTML表单中一样处理数据。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS1跳到某一帧或场景跳到某一帧或场景(1)选择要为其指定该动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有显示“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后双击goto动作。Flash会在脚本窗格中插入gotoAndPlay动作。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS
22、(4)要在跳转后使影片继续播放,可保持参数窗格中的“转到并播放”选项(默认选项)一直处于选中状态。要在跳转后停止播放影片,可选择“转到并停止”选项。(5)在参数窗格的“场景”弹出菜单中,指定目标场景。如果选择“下一个”或“上一个”,那么播放头会跳到下一场景或上一场景的第一帧。如果选择当前场景或已命名的一个场景,则必须为播放头提供要跳转到的帧。(6)在参数窗格的“类型”弹出菜单中,选择一个目标帧:“下一帧”或“上一帧”会将目标帧设置为下一帧或上一帧。“帧号”、“帧标签”或“表达式”都可用于指定帧。表达式是语句中可以生成值的任何部分,例如1+1。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动
23、作脚本AS(7)如果在步骤(6)已选择了“帧号”、“帧标签”或“表达式”,则在“帧”参数框中输入帧号、帧标签,或者输入可以计算出帧号或帧标签的表达式。下面的动作将播放头跳到第50帧,然后从那里继续播放:gotoAndPlay(50);下面的动作将播放头跳到该动作所在的帧之前的第五帧:gotoAndStop(_currentframe+5);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS2停止影片停止影片(1)选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中
24、选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后选择stop动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:stop();网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouseevent)内,如下所示:on(release)stop();如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent内,如下所示:onClipEvent(load)stop();注意:动作后面的空括号表明该动作不带参数。网页开发工具网页开发工具第十二讲
25、第十二讲 动作脚本动作脚本AS3播放影片播放影片(1)选择要为其指定动作的帧、按钮或影片剪辑。(2)如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后选择“影片控制”类别,之后双击play动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:play();网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouseevent)内,如下所示:on(release)play();如
26、果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent内,如下所示:onClipEvent(load)play();网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS4跳到跳到URL(1)选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后单击“浏览器/网络”类别,之后双击getURL动作。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS(4)在参数窗格中,
27、遵循以下指导原则,输入要从中获得文档或将数据发送到其中的URL:使用相对路径,如mypage.html或绝对路径,如http:/ 动作脚本动作脚本AS(5)对于“窗口”,指定要在其中加载文档的窗口或HTML帧,步骤如下:从下列保留目标名中选择:_self指定当前窗口中的当前帧。_blank指定一个新窗口。_parent指定当前帧的父级。_top指定当前窗口中的顶级帧。输入特定窗口或帧的名称,就如同在HTML文件中命名它一样。选择“表达式”,然后输入计算该窗口位置的表达式。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS(6)对于“变量”,选择一种合适的方法将已加载影片的变量发送到
28、“URL”文本框中列出的位置上,步骤如下:选择“用Get方式发送”将数量较少的变量附加到URL的末尾。例如,用此选项将Flash影片中的变量值发送到一个服务端脚本中。当单独标题中的字符串很长时,可选择“用Post方式发送”将变量和URL分开发送,这可以发送更多的变量,并且可以将从表单收集到的信息张贴到服务器的CGI脚本上。选择“不发送”可阻止变量的传递。代码将与下面这行代码相似:getUrl(page2.html,blank);getURL动作将HTML文件page2.html加载入一个新的浏览器窗口中。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS3.2.3 流程控制指令流程
29、控制指令动作脚本使用if、if.else、if.elseif、for、while、do.while、for.in以及switch动作根据条件是否成立来执行动作。动作脚本可以将一个动作重复指定的次数,或是在特定的条件成立时重复动作。使用while、do.while、for和for.in动作可以创建循环。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS1检查条件检查条件检查条件是true还是false的语句以术语if开头。如果条件成立,动作脚本将执行随后的语句。如果条件不成立,动作脚本将跳到此代码块外的下一条语句。要优化代码的性能,应首先检查最有可能的条件。下列语句将测试几个条件,其
30、中术语elseif指定在前面的条件为false时要执行的替代测试:if(password=null|email=null)gotoAndStop(reject);elseif(password=userID)gotoAndPlay(startMovie);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS2使用使用while语句语句while循环将对表达式进行评估,如果表达式为true,则会执行循环体中的代码。当循环体中的每个语句都执行完毕后,会再次评估该表达式。在下面的示例中,循环将执行四次。i=4;while(i0)myMC.duplicateMovieClip(newMC+i
31、,i);i-;网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS可以使用do.while语句创建与while循环类型同样的循环。在do.while循环中,表达式是在代码块结束时进行评估的,因此该循环总是至少执行一次,如下所示:i=4;domyMC.duplicateMovieClip(newMC+i,i);i-;while(i0);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS3使用使用for语句语句多数循环都会使用某种计数器,以控制循环执行的次数。每执行一次循环就叫做一次迭代。可以声明一个变量并编写一条语句,每执行一次循环,该语句都会增加或减小变量。在for动作中
32、,计数器和增加计数器的语句都是动作的一部分。在下面的示例中,第一个表达式(i=4)是在第一次迭代之前评估的初始表达式;第二个表达式(i0)是每次运行循环之前进行检查的条件;第三个表达式(i-)被称为后表达式,在每次运行循环之后会对其进行评估。for(i=4;i0;i-)myMC.duplicateMovieClip(newMC+i,i+10);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS4使用使用for.in语句语句影片剪辑或对象的子级包括其他影片剪辑、函数、对象和变量。下面的示例使用trace在“输出”窗口中显示其结果:myObject=name:Joe,age:25,ci
33、ty:SanFrancisco;for(propertyNameinmyObject)trace(myObjecthastheproperty:+propertyName+,withthevalue:+myObjectpropertyName);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS本示例将在“输出”窗口中生成如下结果:myObjecthastheproperty:name,withthevalue:JoemyObjecthastheproperty:age,withthevalue:25myObjecthastheproperty:city,withthevalue:
34、SanFrancisco如果想让脚本重复特定的子级类型,例如只重复子级影片剪辑,那么将for.in与typeof运算符配合使用即可实现此目的。代码如下:网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASfor(nameinmyMovieClip)if(typeof(myMovieClipname)=movieclip)trace(Ihaveamovieclipchildnamed+name);注意:for.in语句用来重复对象的重复原型链中的对象属性。如果子对象的原型是parent,则for.in也将重复parent的属性。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本
35、AS12.3.1 函数与方法函数与方法在撰写脚本时,可以使用“动作”面板将脚本附加到时间轴上的帧中,或附加到舞台上的按钮或影片剪辑中。当播放头进入该帧时,附加到该帧的脚本会运行或执行。但是,附加到影片第一帧的脚本的行为可能与附加到后续帧的脚本的行为不同,这是因为影片中的第一帧是增量播放的,即对象是在下载到FlashPlayer的同时被放到舞台上的,这会影响到动作何时执行。第一帧之后的所有帧都是在该帧的每个对象都可以使用之后立即播放的。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.3 ActionScript函数函数附加到影片剪辑或按钮上的脚本在事件发生时执行。事件是在影片
36、中发生的事情,例如鼠标移动、按下键盘键或加载影片剪辑等。可以使用动作脚本确定事件何时发生并根据事件执行特定的脚本。附加到按钮或影片剪辑的动作包含在称作处理函数的特殊动作中。onClipEvent和on动作之所以称为处理函数,是因为它们“处理”或管理事件。可以为每个处理函数指定一个或多个事件。当处理函数指定的事件发生时,会执行影片剪辑和按钮动作。如果要在发生不同的事件时执行不同的动作,可以将多个处理函数附加到一个对象中,如图12-6所示。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS图12-6附加到影片剪辑上的onClipEvent处理函数网页开发工具网页开发工具第十二讲第十二讲
37、 动作脚本动作脚本ASonClipEvent动作处理影片剪辑事件,而on动作处理按钮事件。也可对影片剪辑使用on动作,从而创建一个按钮影片剪辑,该影片剪辑用于接收按钮事件。影片剪辑事件和按钮事件也可以由MovieClip和Button对象的方法进行处理。必须定义一个函数,然后将它指定给事件处理函数方法。当该事件发生时,则会执行该函数。可以使用事件方法处理动态创建的影片剪辑的事件。事件方法也可用于在一个脚本中处理影片的所有事件:无需将脚本附加到正在处理其事件的对象中。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS例如,在舞台上有一个按钮,如果使用“动作”面板添加一个trace动作
38、,则会出现以下代码:on(release)trace(Youclickedme!);可以使用方法创建同样的效果,如下所示:myMovieClip.onRelease=function()trace(Youclickedme!);网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS表表12.1 按钮事件处理函数和方法按钮事件处理函数和方法网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS事件处理函数动作事件处理函数方法on(press)onPresson(release)onReleaseon(releaseOutside)onReleaseOutsideon(rollOv
39、er)onRollOveron(rollOut)onRollOuton(dragOver)onDragOveron(dragOut)onDragOuton(keyPress.)onKeyDown,onKeyUp表表12.2 影片剪辑事件处理函数和方法影片剪辑事件处理函数和方法网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS事件处理函数动作事件处理函数方法onClipEvent(load)onLoadonClipEvent(unload)onUnloadonClipEvent(enterFrame)onEnterFrameonClipEvent(mouseDown)onMouseD
40、ownonClipEvent(mouseUp)onMouseUponClipEvent(mouseMove)onMouseMoveonClipEvent(keyDown)onKeyDownonClipEvent(keyUp)onKeyUponClipEvent(data)onData12.3.2 内置函数内置函数函数是一个动作脚本代码块,它可以在影片中的任何位置重新使用。如果将值作为参数传递给函数,则函数将对这些值进行操作。函数也可以返回值。Flash具有内置的函数,使我们可以访问特定的信息,以及执行特定的任务,例如获得播放影片的FlashPlayer的版本号(getVersion)。属于对象
41、的函数称为方法。不属于对象的函数称为顶级函数,可以在“动作”面板的“函数”类别中找到它们。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS每个函数都有自己的特性,而且某些函数需要我们传递特定的值。如果传递的参数多于函数的需要,多余的值将被忽略;如果不传递所需的参数,空的参数会被指定为undefined数据类型,在导出脚本时,可能会导致出现错误。要调用函数,必须在播放头到达的那个帧中调用。也可以在专家模式或标准模式下使用“动作”面板。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASp常用函数和控制动作duplicateMovieClip()eval()getPrope
42、rty()gotoAndPlay()gotoAndStop()nextFrame() nextScene() on(mouseEvent) / 此处是语句 onClipEvent() play()startDrag()stopdrag()网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASduplicateMovieClip()用法:duplicateMovieClip(target, newname, depth) 参数参数target要重制的影片剪辑的目标路径。newname已重制的影片剪辑的唯一标识符。depth已重制的影片剪辑的唯一深度级别。深度级别是重制的影片剪辑的堆叠顺序
43、。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个重制的影片剪辑分配一个唯一的深度级别,以防止它替换已占用深度上的SWF文件。返回返回对重制的影片剪辑的引用说明说明函数;当SWF文件正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑(或“父级”)中处于什么位置,重制的影片剪辑的播放头始终从第1帧开始。父级影片剪辑中的变量不复制到重制的影片剪辑中。如果删除父级影片剪辑,则重制的影片剪辑也会被删除。使用removeMovieClip()动作或方法可以删除用duplicateMovieClip()创建的影片剪辑实例。网页开发工具网页开发
44、工具第十二讲第十二讲 动作脚本动作脚本ASeval用法:eval(expression) 参数参数expression包含要获取的变量、属性、对象或影片剪辑的名称的字符串。返回返回一个值(对对象或影片剪辑的引用)或undefined。说明说明函数;按照名称访问变量、属性、对象或影片剪辑。如果expression是变量或属性,则返回该变量或属性的值。如果expression是对象或影片剪辑,则返回指向该对象或影片剪辑的引用。如果无法找到expression中指定的元素,则返回undefined。示例示例下面的示例使用eval()确定表达式 piece + x的值。因为该结果是一个变量名piece
45、3,所以eval()返回该变量的值并将其赋予y:piece3 = dangerous; x = 3; y = eval(piece + x); trace(y); / 输出:dangerous 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASgetProperty用法:getProperty(my_mc, property) 参数参数my_mc要获取其属性的影片剪辑的实例名称。property影片剪辑的属性。返回返回指定属性的值。说明说明函数;返回影片剪辑my_mc的指定属性的值。示例示例下面的示例获取影片剪辑my_mc的水平轴坐标(_x),并将其分配给变量my_mc_x:my_
46、mc_x = getProperty(_root.my_mc, _x); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASgotoAndPlay()用法:gotoAndPlay(scene, frame) 参数参数scene可选字符串,指定播放头要转到的场景的名称。frame一个表示播放头将转到的帧编号的数字,或者一个表示播放头将转到的帧标签的字符串。说明说明函数;将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。示例示例当用户单击gotoAndPlay()动作所分配到的按钮时,播放头将转到当前场景中的第16帧并开始播放。on (rel
47、ease) gotoAndPlay(16); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASgotoAndStop()用法;gotoAndStop(scene, frame) 参数参数scene可选字符串,指定播放头要转到的场景的名称。frame一个表示播放头将转到的帧编号的数字,或者一个表示播放头将转到的帧标签的字符串。说明说明函数;将播放头转到场景中指定的帧并停止播放。如果未指定场景,则播放头将转到当前场景中的帧。示例示例当用户单击gotoAndStop()动作所分配到的按钮时,播放头将转到当前场景中的第5帧并且SWF文件停止播放。on (release) gotoAndS
48、top(5); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASnextFrame() 参数参数无。说明说明函数;将播放头转到下一帧并停止。示例示例在这个示例中,当用户单击此按钮时,播放头转到下一帧并停下来。on (release) nextFrame(); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASnextScene() 参数参数无。说明说明函数;将播放头移到下一场景的第1帧并停止。示例示例在这个示例中,当用户释放此按钮时,播放头被移到下一场景的第1帧。on (release) nextScene(); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作
49、脚本ASon(mouseEvent) / 此处是语句 参数参数statement(s)发生mouseEvent时执行的指令。mouseEvent是称作“事件”的触发器。当发生此事件时,执行事件后面大括号中的语句。可以为mouseEvent参数指定下面的任何值:press在鼠标指针经过按钮时按下鼠标按钮。release在鼠标指针经过按钮时释放鼠标按钮。releaseOutside当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。rollOut鼠标指针滑出按钮区域。rollOver鼠标指针滑过按钮。dragOut在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮区域。dra
50、gOver在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮,再滑回此按钮。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS说明说明事件处理函数;指定触发动作的鼠标事件或按键事件。示例示例在下面的脚本中,当按下鼠标按钮时,将执行startDrag()动作,当释放鼠标按钮时,将执行条件脚本,然后放下该对象。on (press) startDrag(rabbit); on (release) trace(_root.rabbit._y); trace(_root.rabbit._x); stopDrag(); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASonClipE
51、vent()用法:onClipEvent(movieEvent) / 此处是语句 参数参数movieEvent是一个称作事件的触发器。当事件发生时,执行该事件后面大括号中的语句。可以为movieEvent参数指定下面的任何值:load影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。unload在从时间轴中删除影片剪辑之后,此动作在第1帧中启动。在向受影响的帧附加任何动作之前,先处理与Unload影片剪辑事件关联的动作。enterFrame以影片剪辑帧频不断触发的动作。首先处理与enterFrame剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作。mouseMove每次移动鼠标时启
52、动此动作。_xmouse和_ymouse属性用于确定当前鼠标位置。mouseDown当按下鼠标左键时启动此动作。mouseUp当释放鼠标左键时启动此动作。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS下面的示例将onClipEvent()与mouseMove影片事件一起使用。_xmouse和_ymouse属性跟踪每次鼠标移动时的鼠标位置。onClipEvent(mouseMove) stageX=_root._xmouse; stageY=_root._ymouse; keyDown当按下某个键时启动此动作。keyUp当释放某个键时启动此动作。data当在loadVariabl
53、es()或loadMovie()动作中接收数据时启动此动作。当与loadVariables()动作一起指定时,data事件只在加载最后一个变量时发生一次。当与loadMovie()动作一起指定时,获取数据的每一部分时,data事件都重复发生。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASplay()说明说明函数;在时间轴中向前移动播放头。示例示例下面的代码使用if语句检查用户输入的名称值。如果用户输入Steve,则调用play()动作,而且播放头在时间轴中向前移动。如果用户输入Steve以外的任何其它内容,则不播放SWF文件,而显示带有变量名alert的文本字段。stop();
54、 if (name = Steve) play(); else alert=You are not Steve!; 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASstartDrag()用法:startDrag(target,lock ,left , top , right, bottom) 参数参数target要拖动的影片剪辑的目标路径。lock一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。此参数是可选的。left、top、right、bottom相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形
55、。这些参数是可选的。说明说明函数;使target影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行了startDrag()操作后,影片剪辑将保持可拖动状态,直到用stopDrag()明确停止拖动为止,或直到对其它影片剪辑调用了startDrag()动作为止。示例示例若要创建用户可以放在任何位置的影片剪辑,可将startDrag()和stopDrag()动作附加到该影片剪辑内的某个按钮上。on (press) startDrag(this,true); on (release) stopDrag(); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASstopDrag()
56、函数;停止当前的拖动操作。示例示例此代码在用户释放鼠标按钮时,在实例my_mc上停止拖动动作:on (press) startDrag(my_mc); on (release) stopDrag(); 网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS例1、用按纽控制的小球例2、飘舞的线条例3、水滴例4、拼图游戏例5、打靶游戏例6、时钟例7、鼠标跟随网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS12.4 简单简单Action范例范例例1、用按纽控制的小球说明和步骤:1、新建一个影片剪辑,名为“遮罩”,在第一个图层中放置文字CLICK ME,并将该文字转换为图形元件。
57、在第二个图层中的第一帧用矩形工具画一个彩条,将彩条转换为元件并在第30帧插入一个关键帧,创建动作补间。将文字图层拖到前面,设为遮罩层。完成彩色文字制作。2、新建一个按纽,按纽的弹起帧为文字元件,按纽的经过帧为“遮罩”影片剪辑,注意调整位置。3、回到场景1,在图层1中的第二帧插入一个小球,转换为元件后,在第30帧插入关键帧并创建补间动画。新增图层2,在第一帧中插入2中制作好的按纽元件。4、打开动作窗口,在图层1的第一帧输入动作语句STOP();在图层2的按纽中输入语句:ON(PRESS)GOTOANDPLAY(2);5、测试影片。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS例2
58、、飘舞的线条说明和步骤:1、创建新元件线条(类型为影片剪辑),在第一帧中用铅笔工具画一条曲线,在第30帧中用不同颜色画另外一条曲线,创建形状补间动画。2、回到场景1中,分别在第一帧和第三帧中插入“线条”影片剪辑,位置稍有不同(实例名称为“0”),第二帧为空白帧。3、在场景1中新增一个图层(起名为“动作”),在第一帧、第二帧和第三帧中分别输入以下动作语句。第一帧设置线条的初始状态,第二帧中对线条进行复制,第三帧控制循环次数。4、测试影片。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本ASduplicateMovieClip(i-1,i,i);setProperty(i,_y,getP
59、roperty(i-1,_y)+i/10);setProperty(i,_alpha,getProperty(i-1,_alpha)+3);setProperty(i,_xscale,getProperty(i-1,_xscale)+4);i=i+1;i=1;max=50;setProperty(0,_visible,false);setProperty(0,_alpha,0);if(i=max)gotoAndPlay(2);elsestop();第一帧动作:第一帧动作:第二帧动作:第二帧动作:第三帧动作:第三帧动作:网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS例3、水滴说明
60、和步骤:1、新建一个影片剪辑,名称为“水滴动画”。在第一帧中插入水滴元件,在第五帧插入关键帧,回到第一帧,将水滴变小,设置补间动画。在第50帧插入帧。在第51、52、53插入关键帧,将51和53帧中的水滴元件稍微向右上方旋转。在第80帧插入关键帧,将水滴位置垂直向下移动,回到底53帧创建补间动画。再在120帧插入空白关键帧。2、回到场景1中,在图层1中放入背景图片和文字。新增一个图层,将1中创建的水滴动画影片拖到舞台中,位置随意,实例名称为“drop”。将图层1和图层2都增加到5帧。3、再新增一个图层专门放置动作脚本。分别在第一帧、第二帧和第五帧中输入以下动作脚本:设置初始值、复制影片剪辑、控
61、制循环。4、测试影片。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS第一帧动作:i=0;第二帧动作:duplicatemovieclip(“drop”,”drop”+i,i+100);setproperty(“drop”+i,_x,random(500);setproperty(“drop”+i,_y,random(300);scale=random(80)+50;setproperty(“drop”+i,_xscale,scale);setproperty(“drop”+i,_yscale,scale);i=i+1;第三帧动作:if(i12)hours=hours-12; if(hours1)hours=12; hours=hours*30+int(minutes/2); minutes=minutes*6+int(seconds/10);seconds*=6; 在第2帧插入关键帧,并输入循环语句:gotoandplay(1);5、测试影片。网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS例7、鼠标跟随步骤:1、网页开发工具网页开发工具第十二讲第十二讲 动作脚本动作脚本AS