1、第9章 Flash中的ActionScript编程,9.1 ActionScript编程简介 9.2 ActionScript指令 9.3 ActionScript函数 9.4 分析范例脚本 9.5 思考与练习,9.1 ActionScript编程简介,9.1.1 什么是ActionScript动作脚本是Macromedia Flash MX的脚本撰写语言,它使我们可以向影片添加交互性设置。动作脚本提供了一些元素,例如动作、运算符以及对象,可将这些元素组织到脚本中,指示影片要执行什么操作。我们可以对影片进行设置,从而使单击按钮和按下键盘键之类的事件可触发这些脚本。例如,可用动作脚本为影片创建导
2、航按钮。,和其他脚本撰写语言一样,动作脚本遵循自己的语法规则,保留关键字,提供运算符,并且允许使用变量存储和获取信息。动作脚本包含内置的对象和函数,并且允许我们创建自己的对象和函数。动作脚本的语法和风格与JavaScript的语法和风格很相似。Flash MX能够识别在任何较早版本的Flash中编写的动作脚本。,9.1.2 使用脚本编辑面板1在标准模式下工作在标准模式下,如图9-1所示,可通过从“动作”工具箱(即“动作”面板左侧的列表)中选择项目创建脚本,也可从添加(+)按钮弹出菜单中选择动作。“动作”工具箱把项目分为几个类别,例如“动作”、“属性”和“对象”。还提供了一个按字母顺序列出所有项
3、目的“索引”类别。当单击某项目时,它的说明显示在面板的右上角。当双击某项目时,该项目即出现在面板的右侧的脚本窗格中。,在标准模式下,可添加、删除脚本窗格中的语句或更改语句在其中的顺序;也可在脚本窗格上面的文本框中输入动作的参数;还可用跳转菜单转到当前帧的任意对象的任意脚本。通过“动作”面板还可以查找和替换文本、查看脚本的行号以及“固定”脚本(即在对象或者帧之外单击时,脚本仍保留在脚本窗格中)。要向脚本窗格添加动作,请执行以下操作之一: 单击“动作”工具箱中的某个类别来显示该类别中的动作,然后双击动作将其拖到“脚本”窗格中。 单击添加(+)按钮,然后从弹出菜单中选择一项动作。,要删除一项动作,步
4、骤如下: (1) 选择脚本窗格中的一条语句。 (2) 单击删除(?)按钮或按下Delete键。,图9-1 标准模式,2在专家模式下工作在专家模式下,如图9-2所示,可通过直接在“动作”面板右侧的脚本窗格中输入动作脚本来创建脚本。我们可在脚本窗格中直接编辑动作、输入动作的参数或者删除动作,这和在文本编辑器中创建脚本很相似。也可用“动作”工具箱(在“动作”面板左边)和添加(+)按钮来向脚本窗格添加动作,但是此时不会出现参数文本框。我们不能用向上和向下箭头按钮来移动语句或者用删除(?)按钮删除语句。,图9-2 专家模式,与标准模式类似,专家模式可以用脚本窗格上方的按钮来查找和替换文本、设置和删除调试
5、断点、查看行号以及插入目标路径。也可以用跳转菜单和脚本固定按钮来完成这些功能。在专家模式下,还可以检查语法错误、自动设定代码格式并用代码提示来帮助完成语法。此外,标点符号平衡功能可帮助我们匹配小括号、大括号或中括号。,9.1.3 帧脚本及其实例要使影片在播放头到达时间轴中的一帧时执行某项动作,应为该帧指定一项动作。例如,要在时间轴的第20帧和第10帧之间创建一个循环,应向第20帧添加将播放头发送给第10帧的动作:gotoAndPlay(10)。有些动作通常指定给影片的第一帧,例如,定义函数和设置创建影片初始状态的变量的那些动作。通常,可为第一帧指定影片开始时要执行的任何动作。在名为“动作”的层
6、中放置所有的帧动作是一种很好的做法。这样,总可以在时间轴中找到这些动作。一旦指定了一项动作,请测试影片看它是否工作。,为帧指定动作的步骤如下:(1) 选择时间轴中的关键帧,然后选择“窗口”“动作”,或按下F2键。如果选定的帧不是关键帧,动作将被指定给前一个关键帧。(2) 要指定动作,请执行以下操作之一: 单击“动作”工具箱(在“动作”面板的左侧)中的文件夹来打开它,再双击某个动作将其添加到脚本窗格(在面板的右侧)中。 从“动作”工具箱中把动作拖到脚本窗格中。 单击添加(+)按钮并从弹出菜单中选择一个动作。 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。,(3) 在文本框中根据需要输入动作的
7、参数。(4) 要指定其他的动作,重复步骤(2)和步骤(3)。具有动作的帧在时间轴中显示一个小a,如图9-3所示。,图9-3 帧动作的标志,9.1.4 按钮符号脚本及其实例在单击或滑过按钮时要让影片执行某个动作,可为按钮指定动作。必须将动作指定给按钮的一个实例,当然该元件的其他实例的此动作不受影响。当我们为按钮指定动作时,必须将动作嵌套在on处理函数中,并指定触发该动作的鼠标或键盘事件。在标准模式下为按钮指定动作时,会自动插入on处理函数,然后可从列表中选择一个事件,也可用动作脚本Button对象的事件在发生按钮事件时执行脚本。,为按钮指定动作的具体步骤如下:(1) 选择一个按钮,如果“动作”面
8、板没有打开,选择“窗口”“动作”打开它。或者,从“动作”面板跳转菜单中选择按钮或者影片剪辑的实例,如图9-4所示。,图9-4 动作按钮编辑窗口(标准),(2) 从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定动作: 单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。 把动作从“动作”工具箱拖到脚本窗格中。 单击添加(+)按钮,然后从弹出菜单中选择一项动作。 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。(3) 在面板顶部的参数文本框中,根据需要输入动作的参数。(4) 重复步骤(2)和步骤(3),根据需要指定其他动作。,9.1.5
9、电影片段符号脚本及其实例通过为影片剪辑指定动作,可在影片剪辑加载或接收到数据时让影片执行动作。这样,必须将动作指定给影片剪辑的一个实例,当然该元件的其他实例不受此动作的影响。为影片剪辑指定动作时,必须将动作嵌套在onClipEvent处理函数中,并指定触发该动作的剪辑事件。在标准模式下为影片剪辑指定动作时,将自动插入onClipEvent处理函数。我们可从列表中选择事件,也可用动作脚本MovieClip对象和Button对象的事件来执行脚本。,为影片剪辑指定动作的具体步骤如下: (1) 选择影片剪辑实例,然后选择“窗口”“动作”,如图9-5所示。,图9-5 为影片剪辑指定动作的编辑窗口(标准)
10、,(2) 从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定的动作: 单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。 把动作从“动作”工具箱拖到脚本窗格中。 单击添加(+)按钮,然后从弹出菜单中选择一项动作。 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。(3) 在面板顶部的参数框中,根据需要选择动作的参数。(4) 重复步骤(2)和步骤(3),根据需要指定其他动作。,9.2 ActionScript指令,9.2.1 动作脚本术语和任何脚本撰写语言一样,动作脚本使用自己的术语。动作是在播放影片时指示影片执行某些任务的语句。例如,g
11、otoAndStop 将播放头放置到特定的帧或标签上。下面将介绍动作脚本术语。1布尔值布尔值是true或false值。,2类类是可以创建的用于定义新类型对象的数据类型。要定义类,需要创建一个构造器函数。 3常数常数是不变的元素。例如,常数Key.TAB的含义始终不变,它代表键盘上的Tab键。常数对于比较值很有用。,4构造器构造器是用于定义类的属性和方法的函数。例如,下面的代码通过创建名为Circle的构造器函数创建了一个新的Circle类。 function Circle(x, y, radius)this.x = x;this.y = y;this.radius = radius; ,5数据
12、类型数据类型描述变量或动作脚本元素可以存储的信息种类。有两种数据类型:原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值,它们都有一个常数值,因此可以包含它们所代表的元素的实际值。引用数据类型是指影片的剪辑和对象,它们的值可能发生更改,因此它们包含对该元素的实际值的引用。动作脚本数据类型包括字符串、数字、布尔值、对象、影片剪辑、函数、空值和未定义。,6事件事件是在影片播放时发生的动作。例如,在以下情况时会产生不同的事件:加载影片、播放头进入帧、用户单击按钮或影片剪辑、用户通过键盘键入等。7事件处理函数事件处理函数是管理诸如mouseDown或load等事件的特殊动作。动作脚本事件
13、处理函数共有两类:动作和方法。但事件处理函数的动作只有两个,即on和onClipEvent。在“动作”工具箱中,每个具有事件处理函数方法的动作脚本对象都有一个名为“事件”的子类别。,8表达式表达式是代表值的动作脚本元件的任意合法组合。表达式由运算符和操作数组成。例如,在表达式x + 2中,x和2是操作数,而+是运算符。 9函数函数是可以传递参数并具有返回值的可重复使用的代码块。例如,可以通过向 getProperty函数传递影片剪辑的实例名和属性名,然后它会返回相应的属性值。getVersion函数会返回当前正在播放影片的Flash Player的版本。,10标识符标识符是用于表明变量、属性、
14、对象、函数或方法的名称。它的第一个字符必须是字母、下划线(_)或美元记号($),其后的字符必须是字母、数字、下划线或美元记号。例如,firstName 是变量的名称。11实例实例是属于某个类的对象。类的每个实例包含该类的所有属性和方法。所有影片剪辑都是具有MovieClip类的属性(例如_alpha和_visible)和方法(例如gotoAndPlay和getURL)的实例。,12实例名称实例名称是在脚本中用来代表影片剪辑和按钮实例的惟一名称。可以使用属性检查器为舞台上的实例指定实例名称。例如,库中的主元件可以称为counter,影片中该元件的两个实例可以使用实例名称scorePlayer1和
15、scorePlayer2。下面的代码用实例名称设置每个影片剪辑实例中称为score的变量: _root.scorePlayer1.score += 1; _root.scorePlayer2.score ?= 1;,13关键字关键字是有特殊含义的保留字。例如,var是用于声明本地变量的关键字。不能使用关键字作为标识符。例如,var不是合法的变量名:,14方法方法是分配给对象的函数。分配函数之后,可以将其作为该对象的方法进行调用。例如,下面的代码表示使clear成为controller对象的方法: function reset()this.x_pos = 0;this.y_pos = 0; co
16、ntroller.clear = reset; controller.clear();,15对象对象是属性和方法的集合,每个对象都有自己的名称,并且都是特定类的实例。内置对象是在动作脚本语言中预先定义的。例如,内置的Date对象可以提供系统时钟的信息。 16运算符运算符是通过一个或多个值计算新值的术语。例如,加法(+)运算符可以将两个或多个值相加到一起,从而产生一个新值。运算符处理的值称为操作数。,17参数参数(也称为参量)是用于向函数传递值的占位符。例如,下面的welcome函数使用它在参数firstName和hobby中接收到的两个值。 function welcome(firstName
17、, hobby) welcomeText = “Hello, “ + firstName + “I see you enjoy “ + hobby; ,18属性属性是定义一个对象的属性。例如,_visible 是定义是否隐藏影片剪辑的属性,所有影片剪辑都有此属性。,19目标路径目标路径是影片中影片剪辑实例名称、变量和对象的分层结构地址。我们可以在影片剪辑属性检查器中对影片剪辑实例进行命名。同时,可以使用目标路径引导影片剪辑中的动作来获得或设置变量的值。例如,下面的语句是指向影片剪辑stereoControl内的变量volume的目标路径(主时间轴的名称始终为_root。):_root.ster
18、eoControl.volume,20变量变量是保存任何数据类型的值的标识符。可以创建、更改和更新变量,也可以获得它们存储的值以在脚本中使用。在下面的示例中,等号左侧的标识符是变量: x = 5; name = “Lolo“; customer.address = “66 7th Street“; c = new Color(mcinstanceName);,9.2.2 动画控制指令如果要跳到影片中的某一特定帧或场景,可以使用 goto 动作。当影片跳到某一帧时,可以选择参数来控制是从这新的一帧播放影片(默认设置)还是在这一帧停止。在专家模式下,goto动作在“动作”工具箱作为两个动作列出:g
19、otoAndPlay和gotoAndStop。影片也可以跳到一个场景并播放指定的帧,或跳到下一场景或上一场景的第一帧。除非另有命令指示,否则影片一旦开始播放,它就要把时间轴上的每一帧从头播放到尾。可以通过使用play和stop动作来开始或停止播放影片。例如,可以使用stop动作在某一场景结束并在播放下一场景之前来停止播放影片。一旦停止播放,必须通过使用play动作来明确指示要重新开始播放影片。,可以使用 play 和 stop 动作来控制主时间轴或任意影片剪辑或已加载影片的时间轴。要控制的影片剪辑必须有一个实例名称,而且必须显示在时间轴上。如果要在浏览器窗口中打开网页,或将数据传递给所定义UR
20、L处的另一个应用程序,可以使用getURL动作。例如,可以有一个链接到新Web站点的按钮,它可以将数据发送到CGI脚本,以便如同在HTML表单中一样处理数据。,1跳到某一帧或场景(1) 选择要为其指定该动作的帧、按钮实例或影片剪辑实例。(2) 如果此时没有显示“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3) 在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后双击 goto动作。Flash会在脚本窗格中插入gotoAndPlay动作。,(4) 要在跳转后使影片继续播放,可保持参数窗格中的“转到并播放”
21、选项(默认选项)一直处于选中状态。要在跳转后停止播放影片,可选择“转到并停止”选项。(5) 在参数窗格的“场景”弹出菜单中,指定目标场景。如果选择“下一个”或“上一个”,那么播放头会跳到下一场景或上一场景的第一帧。如果选择当前场景或已命名的一个场景,则必须为播放头提供要跳转到的帧。(6) 在参数窗格的“类型”弹出菜单中,选择一个目标帧:“下一帧”或“上一帧”会将目标帧设置为下一帧或上一帧。“帧号”、“帧标签”或“表达式”都可用于指定帧。表达式是语句中可以生成值的任何部分,例如1 + 1。,(7) 如果在步骤(6)已选择了“帧号”、“帧标签”或“表达式”,则在“帧”参数框中输入帧号、帧标签,或者
22、输入可以计算出帧号或帧标签的表达式。下面的动作将播放头跳到第50帧,然后从那里继续播放:gotoAndPlay(50);下面的动作将播放头跳到该动作所在的帧之前的第五帧:gotoAndStop(_currentframe + 5);,2停止影片(1) 选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2) 如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3) 在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后选择 stop动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:st
23、op();,如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on (mouse event) 内,如下所示: on (release) stop(); 如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示: onClipEvent (load) stop(); 注意:动作后面的空括号表明该动作不带参数。,3播放影片(1) 选择要为其指定动作的帧、按钮或影片剪辑。(2) 如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3) 在“动作”工具箱中,单击“
24、动作”类别,然后选择“影片控制”类别,之后双击 play动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:,play();如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouse event) 内,如下所示: on (release) play(); 如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示: onClipEvent (load) play(); ,4跳到URL(1) 选择要为其指定动作的帧、按钮实例或影片剪辑实例。(2) 如果此时没有看到“动作”面板,可选择“窗口”“动作”显示它。如果“动作”面板不处于
25、标准模式,可从“视图选项”弹出菜单中选择“标准模式”。(3) 在“动作”工具箱中,单击“动作”类别,然后单击“浏览器/网络”类别,之后双击getURL动作。,(4) 在参数窗格中,遵循以下指导原则,输入要从中获得文档或将数据发送到其中的URL: 使用相对路径,如 mypage.html或绝对路径,如http:/ getURL指令的位置向上或向下移动嵌套文件和文件夹的层次。绝对路径就是指定文件所在服务器的名称、路径(目录、卷、文件夹等的嵌套层次)和文件本身名称的完整地址。 要根据表达式值获取URL,可选择“表达式”,然后输入计算URL位置的表达式。例如,下面的语句表明URL是变量dynamicURL的值:getURL(dynamicURL);,(5) 对于“窗口”,指定要在其中加载文档的窗口或HTML帧,步骤如下: 从下列保留目标名中选择:_self 指定当前窗口中的当前帧。_blank 指定一个新窗口。_parent 指定当前帧的父级。_top 指定当前窗口中的顶级帧。 输入特定窗口或帧的名称,就如同在HTML文件中命名它一样。 选择“表达式”,然后输入计算该窗口位置的表达式。,