《FLASH动作脚本AS教学课件.ppt》由会员分享,可在线阅读,更多相关《FLASH动作脚本AS教学课件.ppt(85页珍藏版)》请在三一办公上搜索。
1、第十二讲 FLASH动作脚本AS,12.1 ActionScript编程简介 12.2 ActionScript指令 12.3 ActionScript函数 12.4 简单Action范例,网页开发工具第十二讲 动作脚本AS,网页开发工具第十二讲 动作脚本AS,12.1 动作脚本简介,12.1.2 什么是ActionScript 动作脚本是Macromedia Flash MX的脚本撰写语言,它使我们可以向影片添加交互性设置。动作脚本提供了一些元素,例如动作、运算符以及对象,可将这些元素组织到脚本中,指示影片要执行什么操作。我们可以对影片进行设置,从而使单击按钮和按下键盘键之类的事件可触发这些
2、脚本。例如,可用动作脚本为影片创建导航按钮。,和其他脚本撰写语言一样,动作脚本遵循自己的语法规则,保留关键字,提供运算符,并且允许使用变量存储和获取信息。动作脚本包含内置的对象和函数,并且允许我们创建自己的对象和函数。动作脚本的语法和风格与JavaScript的语法和风格很相似。Flash MX能够识别在任何较早版本的Flash中编写的动作脚本。,网页开发工具第十二讲 动作脚本AS,使用脚本编辑面板 如图12-1所示,可通过直接在“动作”面板右侧的脚本窗格中输入动作脚本来创建脚本。我们可在脚本窗格中直接编辑动作、输入动作的参数或者删除动作,这和在文本编辑器中创建脚本很相似。也可用“动作”工具箱
3、(在“动作”面板左边)和添加(+)按钮来向脚本窗格添加动作。可以用脚本窗格上方的按钮来查找和替换文本、设置和删除调试断点、查看行号以及插入目标路径。,网页开发工具第十二讲 动作脚本AS,图12-1 专家模式,网页开发工具第十二讲 动作脚本AS,帧脚本及其实例 要使影片在播放头到达时间轴中的一帧时执行某项动作,应为该帧指定一项动作。例如,要在时间轴的第20帧和第10帧之间创建一个循环,应向第20帧添加将播放头发送给第10帧的动作:gotoAndPlay(10)。有些动作通常指定给影片的第一帧,例如,定义函数和设置创建影片初始状态的变量的那些动作。通常,可为第一帧指定影片开始时要执行的任何动作。在
4、名为“动作”的层中放置所有的帧动作是一种很好的做法。这样,总可以在时间轴中找到这些动作。一旦指定了一项动作,请测试影片看它是否工作。,网页开发工具第十二讲 动作脚本AS,为帧指定动作的步骤如下:(1)选择时间轴中的关键帧,然后选择“窗口”“动作”,或按下F2键。如果选定的帧不是关键帧,动作将被指定给前一个关键帧。(2)要指定动作,请执行以下操作之一:单击“动作”工具箱(在“动作”面板的左侧)中的文件夹来打开它,再双击某个动作将其添加到脚本窗格(在面板的右侧)中。从“动作”工具箱中把动作拖到脚本窗格中。单击添加(+)按钮并从弹出菜单中选择一个动作。使用添加(+)按钮弹出菜单中动作旁边列出的快捷键
5、。,网页开发工具第十二讲 动作脚本AS,(3)在文本框中根据需要输入动作的参数。(4)要指定其他的动作,重复步骤(2)和步骤(3)。具有动作的帧在时间轴中显示一个小a,如图12-3所示。,图12-3 帧动作的标志,网页开发工具第十二讲 动作脚本AS,12.1.4 按钮符号脚本及其实例 在单击或滑过按钮时要让影片执行某个动作,可为按钮指定动作。必须将动作指定给按钮的一个实例,当然该元件的其他实例的此动作不受影响。当我们为按钮指定动作时,必须将动作嵌套在on处理函数中,并指定触发该动作的鼠标或键盘事件。在标准模式下为按钮指定动作时,会自动插入on处理函数,然后可从列表中选择一个事件,也可用动作脚本
6、Button对象的事件在发生按钮事件时执行脚本。,网页开发工具第十二讲 动作脚本AS,为按钮指定动作的具体步骤如下:(1)选择一个按钮,如果“动作”面板没有打开,选择“窗口”“动作”打开它。或者,从“动作”面板跳转菜单中选择按钮或者影片剪辑的实例,如图12-4所示。,图12-4 动作按钮编辑窗口(标准),网页开发工具第十二讲 动作脚本AS,(2)从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定动作:单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。把动作从“动作”工具箱拖到脚本窗格中。单击添加(+)按钮,然后从弹出菜单中选择一项动作。
7、使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。(3)在面板顶部的参数文本框中,根据需要输入动作的参数。(4)重复步骤(2)和步骤(3),根据需要指定其他动作。,网页开发工具第十二讲 动作脚本AS,12.1.5 电影片段符号脚本及其实例 通过为影片剪辑指定动作,可在影片剪辑加载或接收到数据时让影片执行动作。这样,必须将动作指定给影片剪辑的一个实例,当然该元件的其他实例不受此动作的影响。为影片剪辑指定动作时,必须将动作嵌套在onClipEvent处理函数中,并指定触发该动作的剪辑事件。在标准模式下为影片剪辑指定动作时,将自动插入onClipEvent处理函数。我们可从列表中选择事件,也可用动作
8、脚本MovieClip对象和Button对象的事件来执行脚本。,网页开发工具第十二讲 动作脚本AS,为影片剪辑指定动作的具体步骤如下:(1)选择影片剪辑实例,然后选择“窗口”“动作”,如图12-5所示。,图12-5 为影片剪辑指定动作的编辑窗口(标准),网页开发工具第十二讲 动作脚本AS,(2)从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定的动作:单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。把动作从“动作”工具箱拖到脚本窗格中。单击添加(+)按钮,然后从弹出菜单中选择一项动作。使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。
9、(3)在面板顶部的参数框中,根据需要选择动作的参数。(4)重复步骤(2)和步骤(3),根据需要指定其他动作。,网页开发工具第十二讲 动作脚本AS,12.2.1 动作脚本术语 和任何脚本撰写语言一样,动作脚本使用自己的术语。动作是在播放影片时指示影片执行某些任务的语句。例如,gotoAndStop 将播放头放置到特定的帧或标签上。下面将介绍动作脚本术语。1布尔值 布尔值是true或false值。,网页开发工具第十二讲 动作脚本AS,12.2 ActionScript指令,2类 类是可以创建的用于定义新类型对象的数据类型。要定义类,需要创建一个构造器函数。3常数 常数是不变的元素。例如,常数Key
10、.TAB的含义始终不变,它代表键盘上的Tab键。常数对于比较值很有用。,网页开发工具第十二讲 动作脚本AS,4构造器 构造器是用于定义类的属性和方法的函数。例如,下面的代码通过创建名为Circle的构造器函数创建了一个新的Circle类。function Circle(x,y,radius)this.x=x;this.y=y;this.radius=radius;,网页开发工具第十二讲 动作脚本AS,5数据类型 数据类型描述变量或动作脚本元素可以存储的信息种类。有两种数据类型:原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值,它们都有一个常数值,因此可以包含它们所代表的元素的实
11、际值。引用数据类型是指影片的剪辑和对象,它们的值可能发生更改,因此它们包含对该元素的实际值的引用。动作脚本数据类型包括字符串、数字、布尔值、对象、影片剪辑、函数、空值和未定义。,网页开发工具第十二讲 动作脚本AS,6事件 事件是在影片播放时发生的动作。例如,在以下情况时会产生不同的事件:加载影片、播放头进入帧、用户单击按钮或影片剪辑、用户通过键盘键入等。7事件处理函数 事件处理函数是管理诸如mouseDown或load等事件的特殊动作。动作脚本事件处理函数共有两类:动作和方法。但事件处理函数的动作只有两个,即on和onClipEvent。在“动作”工具箱中,每个具有事件处理函数方法的动作脚本对
12、象都有一个名为“事件”的子类别。,网页开发工具第十二讲 动作脚本AS,8表达式 表达式是代表值的动作脚本元件的任意合法组合。表达式由运算符和操作数组成。例如,在表达式x+2中,x和2是操作数,而+是运算符。9函数 函数是可以传递参数并具有返回值的可重复使用的代码块。例如,可以通过向 getProperty函数传递影片剪辑的实例名和属性名,然后它会返回相应的属性值。getVersion函数会返回当前正在播放影片的Flash Player的版本。,网页开发工具第十二讲 动作脚本AS,10标识符 标识符是用于表明变量、属性、对象、函数或方法的名称。它的第一个字符必须是字母、下划线(_)或美元记号($
13、),其后的字符必须是字母、数字、下划线或美元记号。例如,firstName 是变量的名称。11实例 实例是属于某个类的对象。类的每个实例包含该类的所有属性和方法。所有影片剪辑都是具有MovieClip类的属性(例如_alpha和_visible)和方法(例如gotoAndPlay和getURL)的实例。,网页开发工具第十二讲 动作脚本AS,12实例名称 实例名称是在脚本中用来代表影片剪辑和按钮实例的惟一名称。可以使用属性检查器为舞台上的实例指定实例名称。例如,库中的主元件可以称为counter,影片中该元件的两个实例可以使用实例名称scorePlayer1和scorePlayer2。下面的代码
14、用实例名称设置每个影片剪辑实例中称为score的变量:_root.scorePlayer1.score+=1;_root.scorePlayer2.score?=1;,网页开发工具第十二讲 动作脚本AS,13关键字 关键字是有特殊含义的保留字。例如,var是用于声明本地变量的关键字。不能使用关键字作为标识符。例如,var不是合法的变量名。,网页开发工具第十二讲 动作脚本AS,14方法 方法是分配给对象的函数。分配函数之后,可以将其作为该对象的方法进行调用。例如,下面的代码表示使clear成为controller对象的方法:function reset()this.x_pos=0;this.y_
15、pos=0;controller.clear=reset;controller.clear();,网页开发工具第十二讲 动作脚本AS,15对象 对象是属性和方法的集合,每个对象都有自己的名称,并且都是特定类的实例。内置对象是在动作脚本语言中预先定义的。例如,内置的Date对象可以提供系统时钟的信息。16运算符 运算符是通过一个或多个值计算新值的术语。例如,加法(+)运算符可以将两个或多个值相加到一起,从而产生一个新值。运算符处理的值称为操作数。,网页开发工具第十二讲 动作脚本AS,17参数 参数(也称为参量)是用于向函数传递值的占位符。例如,下面的welcome函数使用它在参数firstNam
16、e和hobby中接收到的两个值。function welcome(firstName,hobby)welcomeText=Hello,+firstName+I see you enjoy+hobby;,网页开发工具第十二讲 动作脚本AS,18属性 属性是定义一个对象的属性。例如,_visible 是定义是否隐藏影片剪辑的属性,所有影片剪辑都有此属性。,网页开发工具第十二讲 动作脚本AS,19目标路径 目标路径是影片中影片剪辑实例名称、变量和对象的分层结构地址。我们可以在影片剪辑属性检查器中对影片剪辑实例进行命名。同时,可以使用目标路径引导影片剪辑中的动作来获得或设置变量的值。例如,下面的语句是
17、指向影片剪辑stereoControl内的变量volume的目标路径(主时间轴的名称始终为_root。):_,网页开发工具第十二讲 动作脚本AS,20变量 变量是保存任何数据类型的值的标识符。可以创建、更改和更新变量,也可以获得它们存储的值以在脚本中使用。在下面的示例中,等号左侧的标识符是变量:x=5;name=Lolo;customer.address=66 7th Street;c=new Color(mcinstanceName);,网页开发工具第十二讲 动作脚本AS,12.2.2 动画控制指令 如果要跳到影片中的某一特定帧或场景,可以使用 goto 动作。当影片跳到某一帧时,可以选择参
18、数来控制是从这新的一帧播放影片(默认设置)还是在这一帧停止。在专家模式下,goto动作在“动作”工具箱作为两个动作列出:gotoAndPlay和gotoAndStop。影片也可以跳到一个场景并播放指定的帧,或跳到下一场景或上一场景的第一帧。除非另有命令指示,否则影片一旦开始播放,它就要把时间轴上的每一帧从头播放到尾。可以通过使用play和stop动作来开始或停止播放影片。例如,可以使用stop动作在某一场景结束并在播放下一场景之前来停止播放影片。一旦停止播放,必须通过使用play动作来明确指示要重新开始播放影片。,网页开发工具第十二讲 动作脚本AS,可以使用 play 和 stop 动作来控制
19、主时间轴或任意影片剪辑或已加载影片的时间轴。要控制的影片剪辑必须有一个实例名称,而且必须显示在时间轴上。如果要在浏览器窗口中打开网页,或将数据传递给所定义URL处的另一个应用程序,可以使用getURL动作。例如,可以有一个链接到新Web站点的按钮,它可以将数据发送到CGI脚本,以便如同在HTML表单中一样处理数据。,网页开发工具第十二讲 动作脚本AS,1跳到某一帧或场景(1)选择要为其指定该动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有显示“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击
20、“动作”类别,然后单击“影片控制”类别,之后双击 goto动作。Flash会在脚本窗格中插入gotoAndPlay动作。,网页开发工具第十二讲 动作脚本AS,(4)要在跳转后使影片继续播放,可保持参数窗格中的“转到并播放”选项(默认选项)一直处于选中状态。要在跳转后停止播放影片,可选择“转到并停止”选项。(5)在参数窗格的“场景”弹出菜单中,指定目标场景。如果选择“下一个”或“上一个”,那么播放头会跳到下一场景或上一场景的第一帧。如果选择当前场景或已命名的一个场景,则必须为播放头提供要跳转到的帧。(6)在参数窗格的“类型”弹出菜单中,选择一个目标帧:“下一帧”或“上一帧”会将目标帧设置为下一帧
21、或上一帧。“帧号”、“帧标签”或“表达式”都可用于指定帧。表达式是语句中可以生成值的任何部分,例如1+1。,网页开发工具第十二讲 动作脚本AS,(7)如果在步骤(6)已选择了“帧号”、“帧标签”或“表达式”,则在“帧”参数框中输入帧号、帧标签,或者输入可以计算出帧号或帧标签的表达式。下面的动作将播放头跳到第50帧,然后从那里继续播放:gotoAndPlay(50);下面的动作将播放头跳到该动作所在的帧之前的第五帧:gotoAndStop(_currentframe+5);,网页开发工具第十二讲 动作脚本AS,2停止影片(1)选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有看到
22、“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后选择 stop动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:stop();,网页开发工具第十二讲 动作脚本AS,如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouse event)内,如下所示:on(release)stop();如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示:onClipEvent(load)st
23、op();注意:动作后面的空括号表明该动作不带参数。,网页开发工具第十二讲 动作脚本AS,3播放影片(1)选择要为其指定动作的帧、按钮或影片剪辑。(2)如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后选择“影片控制”类别,之后双击 play动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:play();,网页开发工具第十二讲 动作脚本AS,如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouse event)内,如下所示:on(
24、release)play();如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示:onClipEvent(load)play();,网页开发工具第十二讲 动作脚本AS,4跳到URL(1)选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2)如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3)在“动作”工具箱中,单击“动作”类别,然后单击“浏览器/网络”类别,之后双击getURL动作。,网页开发工具第十二讲 动作脚本AS,(4)在参数窗格中,遵循以下指导原则,
25、输入要从中获得文档或将数据发送到其中的URL:使用相对路径,如 mypage.html或绝对路径,如http:/。相对路径可以描述一个文件相对于另一个文件的位置,它通知Flash从发出 getURL指令的位置向上或向下移动嵌套文件和文件夹的层次。绝对路径就是指定文件所在服务器的名称、路径(目录、卷、文件夹等的嵌套层次)和文件本身名称的完整地址。要根据表达式值获取URL,可选择“表达式”,然后输入计算URL位置的表达式。例如,下面的语句表明URL是变量dynamicURL的值:getURL(dynamicURL);,网页开发工具第十二讲 动作脚本AS,(5)对于“窗口”,指定要在其中加载文档的窗
26、口或HTML帧,步骤如下:从下列保留目标名中选择:_self 指定当前窗口中的当前帧。_blank 指定一个新窗口。_parent 指定当前帧的父级。_top 指定当前窗口中的顶级帧。输入特定窗口或帧的名称,就如同在HTML文件中命名它一样。选择“表达式”,然后输入计算该窗口位置的表达式。,网页开发工具第十二讲 动作脚本AS,(6)对于“变量”,选择一种合适的方法将已加载影片的变量发送到“URL”文本框中列出的位置上,步骤如下:选择“用Get方式发送”将数量较少的变量附加到URL的末尾。例如,用此选项将 Flash影片中的变量值发送到一个服务端脚本中。当单独标题中的字符串很长时,可选择“用Po
27、st方式发送”将变量和URL分开发送,这可以发送更多的变量,并且可以将从表单收集到的信息张贴到服务器的CGI脚本上。选择“不发送”可阻止变量的传递。代码将与下面这行代码相似:getUrl(page2.html,blank);getURL动作将HTML文件page2.html加载入一个新的浏览器窗口中。,网页开发工具第十二讲 动作脚本AS,3.2.3 流程控制指令 动作脚本使用if、if.else、if.else if、for、while、do.while、for.in以及switch动作根据条件是否成立来执行动作。动作脚本可以将一个动作重复指定的次数,或是在特定的条件成立时重复动作。使用 wh
28、ile、do.while、for和for.in动作可以创建循环。,网页开发工具第十二讲 动作脚本AS,1检查条件 检查条件是true还是false的语句以术语if开头。如果条件成立,动作脚本将执行随后的语句。如果条件不成立,动作脚本将跳到此代码块外的下一条语句。要优化代码的性能,应首先检查最有可能的条件。下列语句将测试几个条件,其中术语else if指定在前面的条件为false时要执行的替代测试:if(password=null|email=null)gotoAndStop(reject);else if(password=userID)gotoAndPlay(startMovie);,网页开
29、发工具第十二讲 动作脚本AS,2使用while语句 while循环将对表达式进行评估,如果表达式为true,则会执行循环体中的代码。当循环体中的每个语句都执行完毕后,会再次评估该表达式。在下面的示例中,循环将执行四次。i=4;while(i 0)myMC.duplicateMovieClip(newMC+i,i);i-;,网页开发工具第十二讲 动作脚本AS,可以使用do.while语句创建与while循环类型同样的循环。在do.while循环中,表达式是在代码块结束时进行评估的,因此该循环总是至少执行一次,如下所示:i=4;do myMC.duplicateMovieClip(newMC+i,
30、i);i-;while(i 0);,网页开发工具第十二讲 动作脚本AS,3使用for语句 多数循环都会使用某种计数器,以控制循环执行的次数。每执行一次循环就叫做一次迭代。可以声明一个变量并编写一条语句,每执行一次循环,该语句都会增加或减小变量。在 for 动作中,计数器和增加计数器的语句都是动作的一部分。在下面的示例中,第一个表达式(i=4)是在第一次迭代之前评估的初始表达式;第二个表达式(i 0)是每次运行循环之前进行检查的条件;第三个表达式(i-)被称为后表达式,在每次运行循环之后会对其进行评估。for(i=4;i 0;i-)myMC.duplicateMovieClip(newMC+i,
31、i+10);,网页开发工具第十二讲 动作脚本AS,4使用for.in语句 影片剪辑或对象的子级包括其他影片剪辑、函数、对象和变量。下面的示例使用trace在“输出”窗口中显示其结果:myObject=name:Joe,age:25,city:San Francisco;for(propertyName in myObject)trace(myObject has the property:+propertyName+,with the value:+myObjectpropertyName);,网页开发工具第十二讲 动作脚本AS,本示例将在“输出”窗口中生成如下结果:myObject has
32、the property:name,with the value:JoemyObject has the property:age,with the value:25myObject has the property:city,with the value:San Francisco 如果想让脚本重复特定的子级类型,例如只重复子级影片剪辑,那么将for.in与typeof 运算符配合使用即可实现此目的。代码如下:,网页开发工具第十二讲 动作脚本AS,for(name in myMovieClip)if(typeof(myMovieClipname)=movieclip)trace(I have
33、 a movie clip child named+name);注意:for.in语句用来重复对象的重复原型链中的对象属性。如果子对象的原型是parent,则for.in也将重复parent的属性。,网页开发工具第十二讲 动作脚本AS,12.3.1 函数与方法 在撰写脚本时,可以使用“动作”面板将脚本附加到时间轴上的帧中,或附加到舞台上的按钮或影片剪辑中。当播放头进入该帧时,附加到该帧的脚本会运行或执行。但是,附加到影片第一帧的脚本的行为可能与附加到后续帧的脚本的行为不同,这是因为影片中的第一帧是增量播放的,即对象是在下载到Flash Player的同时被放到舞台上的,这会影响到动作何时执行。
34、第一帧之后的所有帧都是在该帧的每个对象都可以使用之后立即播放的。,网页开发工具第十二讲 动作脚本AS,12.3 ActionScript函数,附加到影片剪辑或按钮上的脚本在事件发生时执行。事件是在影片中发生的事情,例如鼠标移动、按下键盘键或加载影片剪辑等。可以使用动作脚本确定事件何时发生并根据事件执行特定的脚本。附加到按钮或影片剪辑的动作包含在称作处理函数的特殊动作中。onClipEvent和on动作之所以称为处理函数,是因为它们“处理”或管理事件。可以为每个处理函数指定一个或多个事件。当处理函数指定的事件发生时,会执行影片剪辑和按钮动作。如果要在发生不同的事件时执行不同的动作,可以将多个处理
35、函数附加到一个对象中,如图12-6所示。,网页开发工具第十二讲 动作脚本AS,图12-6 附加到影片剪辑上的onClipEvent处理函数,网页开发工具第十二讲 动作脚本AS,onClipEvent动作处理影片剪辑事件,而on动作处理按钮事件。也可对影片剪辑使用on动作,从而创建一个按钮影片剪辑,该影片剪辑用于接收按钮事件。影片剪辑事件和按钮事件也可以由MovieClip和Button对象的方法进行处理。必须定义一个函数,然后将它指定给事件处理函数方法。当该事件发生时,则会执行该函数。可以使用事件方法处理动态创建的影片剪辑的事件。事件方法也可用于在一个脚本中处理影片的所有事件:无需将脚本附加到
36、正在处理其事件的对象中。,网页开发工具第十二讲 动作脚本AS,例如,在舞台上有一个按钮,如果使用“动作”面板添加一个trace动作,则会出现以下代码:on(release)trace(You clicked me!);可以使用方法创建同样的效果,如下所示:myMovieClip.onRelease=function()trace(You clicked me!);,网页开发工具第十二讲 动作脚本AS,表12.1 按钮事件处理函数和方法,网页开发工具第十二讲 动作脚本AS,表12.2 影片剪辑事件处理函数和方法,网页开发工具第十二讲 动作脚本AS,12.3.2 内置函数 函数是一个动作脚本代码块
37、,它可以在影片中的任何位置重新使用。如果将值作为参数传递给函数,则函数将对这些值进行操作。函数也可以返回值。Flash具有内置的函数,使我们可以访问特定的信息,以及执行特定的任务,例如获得播放影片的Flash Player的版本号(getVersion)。属于对象的函数称为方法。不属于对象的函数称为顶级函数,可以在“动作”面板的“函数”类别中找到它们。,网页开发工具第十二讲 动作脚本AS,每个函数都有自己的特性,而且某些函数需要我们传递特定的值。如果传递的参数多于函数的需要,多余的值将被忽略;如果不传递所需的参数,空的参数会被指定为undefined 数据类型,在导出脚本时,可能会导致出现错误
38、。要调用函数,必须在播放头到达的那个帧中调用。也可以在专家模式或标准模式下使用“动作”面板。,网页开发工具第十二讲 动作脚本AS,常用函数和控制动作,duplicateMovieClip()eval()getProperty()gotoAndPlay()gotoAndStop()nextFrame()nextScene()on(mouseEvent)/此处是语句 onClipEvent()play()startDrag()stopdrag(),网页开发工具第十二讲 动作脚本AS,duplicateMovieClip(),用法:duplicateMovieClip(target,newname,
39、depth),参数target要重制的影片剪辑的目标路径。newname已重制的影片剪辑的唯一标识符。depth已重制的影片剪辑的唯一深度级别。深度级别是重制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个重制的影片剪辑分配一个唯一的深度级别,以防止它替换已占用深度上的 SWF 文件。,返回对重制的影片剪辑的引用,说明函数;当 SWF 文件正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑(或“父级”)中处于什么位置,重制的影片剪辑的播放头始终从第 1 帧开始。父级影片剪辑中的变量不复制到重制的影片剪辑中。如
40、果删除父级影片剪辑,则重制的影片剪辑也会被删除。使用 removeMovieClip()动作或方法可以删除用 duplicateMovieClip()创建的影片剪辑实例。,网页开发工具第十二讲 动作脚本AS,eval,用法:eval(expression),参数expression包含要获取的变量、属性、对象或影片剪辑的名称的字符串。,返回一个值(对对象或影片剪辑的引用)或 undefined。,说明函数;按照名称访问变量、属性、对象或影片剪辑。如果 expression 是变量或属性,则返回该变量或属性的值。如果 expression 是对象或影片剪辑,则返回指向该对象或影片剪辑的引用。如果
41、无法找到 expression 中指定的元素,则返回 undefined。,示例下面的示例使用 eval()确定表达式 piece+x 的值。因为该结果是一个变量名 piece3,所以 eval()返回该变量的值并将其赋予 y:,piece3=dangerous;x=3;y=eval(piece+x);trace(y);/输出:dangerous,网页开发工具第十二讲 动作脚本AS,getProperty,用法:getProperty(my_mc,property),参数my_mc要获取其属性的影片剪辑的实例名称。property影片剪辑的属性。,返回指定属性的值。,说明函数;返回影片剪辑 m
42、y_mc 的指定属性的值。,示例下面的示例获取影片剪辑my_mc 的水平轴坐标(_x),并将其分配给变量 my_mc_x:,my_mc_x=getProperty(_root.my_mc,_x);,网页开发工具第十二讲 动作脚本AS,gotoAndPlay(),用法:gotoAndPlay(scene,frame),参数scene可选字符串,指定播放头要转到的场景的名称。frame一个表示播放头将转到的帧编号的数字,或者一个表示播放头将转到的帧标签的字符串。,说明函数;将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。,示例当用户单击 gotoAnd
43、Play()动作所分配到的按钮时,播放头将转到当前场景中的第 16 帧并开始播放。,on(release)gotoAndPlay(16);,网页开发工具第十二讲 动作脚本AS,gotoAndStop(),用法;gotoAndStop(scene,frame),参数scene可选字符串,指定播放头要转到的场景的名称。frame一个表示播放头将转到的帧编号的数字,或者一个表示播放头将转到的帧标签的字符串。,说明函数;将播放头转到场景中指定的帧并停止播放。如果未指定场景,则播放头将转到当前场景中的帧。,示例当用户单击 gotoAndStop()动作所分配到的按钮时,播放头将转到当前场景中的第 5帧并
44、且 SWF 文件停止播放。,on(release)gotoAndStop(5);,网页开发工具第十二讲 动作脚本AS,nextFrame(),参数无。,说明函数;将播放头转到下一帧并停止。,示例在这个示例中,当用户单击此按钮时,播放头转到下一帧并停下来。,on(release)nextFrame();,网页开发工具第十二讲 动作脚本AS,nextScene(),参数无。,说明函数;将播放头移到下一场景的第 1 帧并停止。,示例在这个示例中,当用户释放此按钮时,播放头被移到下一场景的第 1 帧。,on(release)nextScene();,网页开发工具第十二讲 动作脚本AS,on(mouse
45、Event)/此处是语句,参数statement(s)发生 mouseEvent 时执行的指令。mouseEvent 是称作“事件”的触发器。当发生此事件时,执行事件后面大括号中的语句。可以为 mouseEvent参数指定下面的任何值:press在鼠标指针经过按钮时按下鼠标按钮。release在鼠标指针经过按钮时释放鼠标按钮。releaseOutside当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。rollOut鼠标指针滑出按钮区域。,rollOver鼠标指针滑过按钮。dragOut在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮区域。dragOver在鼠标指针滑
46、过按钮时按下鼠标按钮,然后滑出此按钮,再滑回此按钮。,网页开发工具第十二讲 动作脚本AS,说明事件处理函数;指定触发动作的鼠标事件或按键事件。,示例在下面的脚本中,当按下鼠标按钮时,将执行startDrag()动作,当释放鼠标按钮时,将执行条件脚本,然后放下该对象。,on(press)startDrag(rabbit);on(release););stopDrag();,网页开发工具第十二讲 动作脚本AS,onClipEvent(),用法:onClipEvent(movieEvent)/此处是语句,参数movieEvent 是一个称作事件 的触发器。当事件发生时,执行该事件后面大括号中的语句。
47、可以为 movieEvent 参数指定下面的任何值:load影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。unload在从时间轴中删除影片剪辑之后,此动作在第 1 帧中启动。在向受影响的帧附加任何动作之前,先处理与 Unload 影片剪辑事件关联的动作。,enterFrame以影片剪辑帧频不断触发的动作。首先处理与 enterFrame 剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作。mouseMove每次移动鼠标时启动此动作。_xmouse 和 _ymouse 属性用于确定当前鼠标位置。mouseDown当按下鼠标左键时启动此动作。mouseUp当释放鼠标左键时启动此动作。
48、,网页开发工具第十二讲 动作脚本AS,下面的示例将 onClipEvent()与 mouseMove 影片事件一起使用。_xmouse 和 _ymouse 属性跟踪每次鼠标移动时的鼠标位置。,onClipEvent(mouseMove)stageX=_root._xmouse;stageY=_root._ymouse;,keyDown当按下某个键时启动此动作。keyUp当释放某个键时启动此动作。data当在 loadVariables()或 loadMovie()动作中接收数据时启动此动作。当与loadVariables()动作一起指定时,data 事件只在加载最后一个变量时发生一次。当与lo
49、adMovie()动作一起指定时,获取数据的每一部分时,data事件都重复发生。,网页开发工具第十二讲 动作脚本AS,play()说明函数;在时间轴中向前移动播放头。,示例下面的代码使用 if 语句检查用户输入的名称值。如果用户输入 Steve,则调用 play()动作,而且播放头在时间轴中向前移动。如果用户输入 Steve 以外的任何其它内容,则不播放 SWF 文件,而显示带有变量名 alert 的文本字段。,stop();if(name=Steve)play();else alert=You are not Steve!;,网页开发工具第十二讲 动作脚本AS,startDrag(),用法:
50、startDrag(target,lock,left,top,right,bottom),参数target要拖动的影片剪辑的目标路径。lock一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。此参数是可选的。left、top、right、bottom相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。这些参数是可选的。,说明函数;使 target 影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行了 startDrag()操作后,影片剪辑将保持可拖动状态,直到用 stopDrag()明确停止拖动为止,或直