850 likes | 1.06k Views
第十二讲 FLASH 动作脚本 AS. 《 网页开发工具 》 第十二讲 动作脚本 AS. 12.1 ActionScript 编程简介 12.2 ActionScript 指令 12.3 ActionScript 函数 12.4 简单 Action 范例. 《 网页开发工具 》 第十二讲 动作脚本 AS. 12.1 动作脚本简介. 12.1.2 什么是 ActionScript
E N D
《网页开发工具》第十二讲 动作脚本AS 12.1 ActionScript编程简介 12.2 ActionScript指令 12.3 ActionScript函数 12.4 简单Action范例
《网页开发工具》第十二讲 动作脚本AS 12.1 动作脚本简介 12.1.2 什么是ActionScript 动作脚本是Macromedia Flash MX的脚本撰写语言,它使我们可以向影片添加交互性设置。动作脚本提供了一些元素,例如动作、运算符以及对象,可将这些元素组织到脚本中,指示影片要执行什么操作。我们可以对影片进行设置,从而使单击按钮和按下键盘键之类的事件可触发这些脚本。例如,可用动作脚本为影片创建导航按钮。
《网页开发工具》第十二讲 动作脚本AS 和其他脚本撰写语言一样,动作脚本遵循自己的语法规则,保留关键字,提供运算符,并且允许使用变量存储和获取信息。动作脚本包含内置的对象和函数,并且允许我们创建自己的对象和函数。 动作脚本的语法和风格与JavaScript的语法和风格很相似。Flash MX能够识别在任何较早版本的Flash中编写的动作脚本。
《网页开发工具》第十二讲 动作脚本AS 12.1.2使用脚本编辑面板 如图12-1所示,可通过直接在“动作”面板右侧的脚本窗格中输入动作脚本来创建脚本。我们可在脚本窗格中直接编辑动作、输入动作的参数或者删除动作,这和在文本编辑器中创建脚本很相似。也可用“动作”工具箱(在“动作”面板左边)和添加(+)按钮来向脚本窗格添加动作。 可以用脚本窗格上方的按钮来查找和替换文本、设置和删除调试断点、查看行号以及插入目标路径。
《网页开发工具》第十二讲 动作脚本AS 图12-1 专家模式
《网页开发工具》第十二讲 动作脚本AS 12.1.3帧脚本及其实例 要使影片在播放头到达时间轴中的一帧时执行某项动作,应为该帧指定一项动作。例如,要在时间轴的第20帧和第10帧之间创建一个循环,应向第20帧添加将播放头发送给第10帧的动作:gotoAndPlay(10)。 有些动作通常指定给影片的第一帧,例如,定义函数和设置创建影片初始状态的变量的那些动作。通常,可为第一帧指定影片开始时要执行的任何动作。 在名为“动作”的层中放置所有的帧动作是一种很好的做法。这样,总可以在时间轴中找到这些动作。一旦指定了一项动作,请测试影片看它是否工作。
《网页开发工具》第十二讲 动作脚本AS 为帧指定动作的步骤如下: (1) 选择时间轴中的关键帧,然后选择“窗口”→“动作”,或按下F2键。如果选定的帧不是关键帧,动作将被指定给前一个关键帧。 (2) 要指定动作,请执行以下操作之一: ● 单击“动作”工具箱(在“动作”面板的左侧)中的文件夹来打开它,再双击某个动作将其添加到脚本窗格(在面板的右侧)中。 ● 从“动作”工具箱中把动作拖到脚本窗格中。 ● 单击添加(+)按钮并从弹出菜单中选择一个动作。 ● 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。
《网页开发工具》第十二讲 动作脚本AS (3) 在文本框中根据需要输入动作的参数。 (4) 要指定其他的动作,重复步骤(2)和步骤(3)。具有动作的帧在时间轴中显示一个小a,如图12-3所示。 图12-3 帧动作的标志
《网页开发工具》第十二讲 动作脚本AS 12.1.4 按钮符号脚本及其实例 在单击或滑过按钮时要让影片执行某个动作,可为按钮指定动作。必须将动作指定给按钮的一个实例,当然该元件的其他实例的此动作不受影响。 当我们为按钮指定动作时,必须将动作嵌套在on处理函数中,并指定触发该动作的鼠标或键盘事件。在标准模式下为按钮指定动作时,会自动插入on处理函数,然后可从列表中选择一个事件,也可用动作脚本Button对象的事件在发生按钮事件时执行脚本。
《网页开发工具》第十二讲 动作脚本AS 为按钮指定动作的具体步骤如下: (1) 选择一个按钮,如果“动作”面板没有打开,选择“窗口”→“动作”打开它。或者,从“动作”面板跳转菜单中选择按钮或者影片剪辑的实例,如图12-4所示。 图12-4 动作按钮编辑窗口(标准)
《网页开发工具》第十二讲 动作脚本AS (2) 从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定动作: ● 单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。 ● 把动作从“动作”工具箱拖到脚本窗格中。 ● 单击添加(+)按钮,然后从弹出菜单中选择一项动作。 ● 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。 (3) 在面板顶部的参数文本框中,根据需要输入动作的参数。 (4) 重复步骤(2)和步骤(3),根据需要指定其他动作。
《网页开发工具》第十二讲 动作脚本AS 12.1.5 电影片段符号脚本及其实例 通过为影片剪辑指定动作,可在影片剪辑加载或接收到数据时让影片执行动作。这样,必须将动作指定给影片剪辑的一个实例,当然该元件的其他实例不受此动作的影响。 为影片剪辑指定动作时,必须将动作嵌套在onClipEvent处理函数中,并指定触发该动作的剪辑事件。在标准模式下为影片剪辑指定动作时,将自动插入onClipEvent处理函数。我们可从列表中选择事件,也可用动作脚本MovieClip对象和Button对象的事件来执行脚本。
《网页开发工具》第十二讲 动作脚本AS 为影片剪辑指定动作的具体步骤如下: (1) 选择影片剪辑实例,然后选择“窗口”→“动作”,如图12-5所示。 图12-5 为影片剪辑指定动作的编辑窗口(标准)
《网页开发工具》第十二讲 动作脚本AS (2) 从标准模式“动作”工具箱中选择一项动作,可执行以下操作之一来指定的动作: ● 单击“动作”工具箱(在面板的左侧)中的文件夹,双击某个动作将其添加到脚本窗格(在面板右侧)中。 ● 把动作从“动作”工具箱拖到脚本窗格中。 ● 单击添加(+)按钮,然后从弹出菜单中选择一项动作。 ● 使用添加(+)按钮弹出菜单中动作旁边列出的快捷键。 (3) 在面板顶部的参数框中,根据需要选择动作的参数。 (4) 重复步骤(2)和步骤(3),根据需要指定其他动作。
《网页开发工具》第十二讲 动作脚本AS 12.2 ActionScript指令 12.2.1 动作脚本术语 和任何脚本撰写语言一样,动作脚本使用自己的术语。动作是在播放影片时指示影片执行某些任务的语句。例如,gotoAndStop 将播放头放置到特定的帧或标签上。下面将介绍动作脚本术语。 1.布尔值 布尔值是true或false值。
《网页开发工具》第十二讲 动作脚本AS 2.类 类是可以创建的用于定义新类型对象的数据类型。要定义类,需要创建一个构造器函数。 3.常数 常数是不变的元素。例如,常数Key.TAB的含义始终不变,它代表键盘上的Tab键。常数对于比较值很有用。
《网页开发工具》第十二讲 动作脚本AS • 4.构造器 • 构造器是用于定义类的属性和方法的函数。例如,下面的代码通过创建名为Circle的构造器函数创建了一个新的Circle类。 • function Circle(x, y, radius){ • this.x = x; • this.y = y; • this.radius = radius; • }
《网页开发工具》第十二讲 动作脚本AS 5.数据类型 数据类型描述变量或动作脚本元素可以存储的信息种类。有两种数据类型:原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值,它们都有一个常数值,因此可以包含它们所代表的元素的实际值。引用数据类型是指影片的剪辑和对象,它们的值可能发生更改,因此它们包含对该元素的实际值的引用。动作脚本数据类型包括字符串、数字、布尔值、对象、影片剪辑、函数、空值和未定义。
《网页开发工具》第十二讲 动作脚本AS 6.事件 事件是在影片播放时发生的动作。例如,在以下情况时会产生不同的事件:加载影片、播放头进入帧、用户单击按钮或影片剪辑、用户通过键盘键入等。 7.事件处理函数 事件处理函数是管理诸如mouseDown或load等事件的特殊动作。动作脚本事件处理函数共有两类:动作和方法。但事件处理函数的动作只有两个,即on和onClipEvent。在“动作”工具箱中,每个具有事件处理函数方法的动作脚本对象都有一个名为“事件”的子类别。
《网页开发工具》第十二讲 动作脚本AS 8.表达式 表达式是代表值的动作脚本元件的任意合法组合。表达式由运算符和操作数组成。例如,在表达式x + 2中,x和2是操作数,而+是运算符。 9.函数 函数是可以传递参数并具有返回值的可重复使用的代码块。例如,可以通过向 getProperty函数传递影片剪辑的实例名和属性名,然后它会返回相应的属性值。getVersion函数会返回当前正在播放影片的Flash Player的版本。
《网页开发工具》第十二讲 动作脚本AS 10.标识符 标识符是用于表明变量、属性、对象、函数或方法的名称。它的第一个字符必须是字母、下划线(_)或美元记号($),其后的字符必须是字母、数字、下划线或美元记号。例如,firstName 是变量的名称。 11.实例 实例是属于某个类的对象。类的每个实例包含该类的所有属性和方法。所有影片剪辑都是具有MovieClip类的属性(例如_alpha和_visible)和方法(例如gotoAndPlay和getURL)的实例。
《网页开发工具》第十二讲 动作脚本AS • 12.实例名称 • 实例名称是在脚本中用来代表影片剪辑和按钮实例的惟一名称。可以使用属性检查器为舞台上的实例指定实例名称。例如,库中的主元件可以称为counter,影片中该元件的两个实例可以使用实例名称scorePlayer1和scorePlayer2。下面的代码用实例名称设置每个影片剪辑实例中称为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_pos = 0; • } • controller.clear = reset; • controller.clear();
《网页开发工具》第十二讲 动作脚本AS 15.对象 对象是属性和方法的集合,每个对象都有自己的名称,并且都是特定类的实例。内置对象是在动作脚本语言中预先定义的。例如,内置的Date对象可以提供系统时钟的信息。 16.运算符 运算符是通过一个或多个值计算新值的术语。例如,加法(+)运算符可以将两个或多个值相加到一起,从而产生一个新值。运算符处理的值称为操作数。
《网页开发工具》第十二讲 动作脚本AS • 17.参数 • 参数(也称为参量)是用于向函数传递值的占位符。例如,下面的welcome函数使用它在参数firstName和hobby中接收到的两个值。 • function welcome(firstName, hobby) { • welcomeText = "Hello, " + firstName + "I see you enjoy " + hobby; • }
《网页开发工具》第十二讲 动作脚本AS 18.属性 属性是定义一个对象的属性。例如,_visible 是定义是否隐藏影片剪辑的属性,所有影片剪辑都有此属性。
《网页开发工具》第十二讲 动作脚本AS 19.目标路径 目标路径是影片中影片剪辑实例名称、变量和对象的分层结构地址。我们可以在影片剪辑属性检查器中对影片剪辑实例进行命名。同时,可以使用目标路径引导影片剪辑中的动作来获得或设置变量的值。例如,下面的语句是指向影片剪辑stereoControl内的变量volume的目标路径(主时间轴的名称始终为_root。): _root.stereoControl.volume
《网页开发工具》第十二讲 动作脚本AS • 20.变量 • 变量是保存任何数据类型的值的标识符。可以创建、更改和更新变量,也可以获得它们存储的值以在脚本中使用。在下面的示例中,等号左侧的标识符是变量: • x = 5; • name = "Lolo"; • customer.address = "66 7th Street"; • c = new Color(mcinstanceName);
《网页开发工具》第十二讲 动作脚本AS 12.2.2 动画控制指令 如果要跳到影片中的某一特定帧或场景,可以使用 goto 动作。当影片跳到某一帧时,可以选择参数来控制是从这新的一帧播放影片(默认设置)还是在这一帧停止。在专家模式下,goto动作在“动作”工具箱作为两个动作列出:gotoAndPlay和gotoAndStop。影片也可以跳到一个场景并播放指定的帧,或跳到下一场景或上一场景的第一帧。 除非另有命令指示,否则影片一旦开始播放,它就要把时间轴上的每一帧从头播放到尾。可以通过使用play和stop动作来开始或停止播放影片。例如,可以使用stop动作在某一场景结束并在播放下一场景之前来停止播放影片。一旦停止播放,必须通过使用play动作来明确指示要重新开始播放影片。
《网页开发工具》第十二讲 动作脚本AS 可以使用 play 和 stop 动作来控制主时间轴或任意影片剪辑或已加载影片的时间轴。要控制的影片剪辑必须有一个实例名称,而且必须显示在时间轴上。 如果要在浏览器窗口中打开网页,或将数据传递给所定义URL处的另一个应用程序,可以使用getURL动作。例如,可以有一个链接到新Web站点的按钮,它可以将数据发送到CGI脚本,以便如同在HTML表单中一样处理数据。
《网页开发工具》第十二讲 动作脚本AS 1.跳到某一帧或场景 (1) 选择要为其指定该动作的帧、按钮实例或影片剪辑实例。 (2) 如果此时没有显示“动作”面板,可选择“窗口”→“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。 (3) 在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后双击 goto动作。Flash会在脚本窗格中插入gotoAndPlay动作。
《网页开发工具》第十二讲 动作脚本AS (4) 要在跳转后使影片继续播放,可保持参数窗格中的“转到并播放”选项(默认选项)一直处于选中状态。要在跳转后停止播放影片,可选择“转到并停止”选项。 (5) 在参数窗格的“场景”弹出菜单中,指定目标场景。如果选择“下一个”或“上一个”,那么播放头会跳到下一场景或上一场景的第一帧。如果选择当前场景或已命名的一个场景,则必须为播放头提供要跳转到的帧。 (6) 在参数窗格的“类型”弹出菜单中,选择一个目标帧: ●“下一帧”或“上一帧”会将目标帧设置为下一帧或上一帧。 ●“帧号”、“帧标签”或“表达式”都可用于指定帧。表达式是语句中可以生成值的任何部分,例如1 + 1。
《网页开发工具》第十二讲 动作脚本AS (7) 如果在步骤(6)已选择了“帧号”、“帧标签”或“表达式”,则在“帧”参数框中输入帧号、帧标签,或者输入可以计算出帧号或帧标签的表达式。下面的动作将播放头跳到第50帧,然后从那里继续播放: gotoAndPlay(50); 下面的动作将播放头跳到该动作所在的帧之前的第五帧: gotoAndStop(_currentframe + 5);
《网页开发工具》第十二讲 动作脚本AS 2.停止影片 (1) 选择要为其指定动作的帧、按钮实例或影片剪辑实例。 (2) 如果此时没有看到“动作”面板,可选择“窗口”→“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。 (3) 在“动作”工具箱中,单击“动作”类别,然后单击“影片控制”类别,之后选择 stop动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码: stop();
《网页开发工具》第十二讲 动作脚本AS • 如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on (mouse event) 内,如下所示: • on (release) { • stop(); • } • 如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示: • onClipEvent (load) { • stop(); • } • 注意:动作后面的空括号表明该动作不带参数。
《网页开发工具》第十二讲 动作脚本AS 3.播放影片 (1) 选择要为其指定动作的帧、按钮或影片剪辑。 (2) 如果此时没有看到“动作”面板,可选择“窗口”→“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。 (3) 在“动作”工具箱中,单击“动作”类别,然后选择“影片控制”类别,之后双击 play动作。如果该动作附加到某一帧上,那么脚本窗格中将出现如下代码:play();
《网页开发工具》第十二讲 动作脚本AS • 如果该动作附加到某一按钮上,那么该动作会被自动包含在处理函数on(mouse event) 内,如下所示: • on (release) { • play(); • } • 如果动作附加到某个影片剪辑中,那么该动作会被自动包含在处理函数onClipEvent 内,如下所示: • onClipEvent (load) { • play(); • }
《网页开发工具》第十二讲 动作脚本AS 4.跳到URL (1) 选择要为其指定动作的帧、按钮实例或影片剪辑实例。 (2) 如果此时没有看到“动作”面板,可选择“窗口”→“动作”显示它。如果“动作”面板不处于标准模式,可从“视图选项”弹出菜单中选择“标准模式”。 (3) 在“动作”工具箱中,单击“动作”类别,然后单击“浏览器/网络”类别,之后双击getURL动作。
《网页开发工具》第十二讲 动作脚本AS (4) 在参数窗格中,遵循以下指导原则,输入要从中获得文档或将数据发送到其中的URL: ● 使用相对路径,如 mypage.html或绝对路径,如http://www.mydomain.com/mypage.html。相对路径可以描述一个文件相对于另一个文件的位置,它通知Flash从发出 getURL指令的位置向上或向下移动嵌套文件和文件夹的层次。绝对路径就是指定文件所在服务器的名称、路径(目录、卷、文件夹等的嵌套层次)和文件本身名称的完整地址。 ● 要根据表达式值获取URL,可选择“表达式”,然后输入计算URL位置的表达式。例如,下面的语句表明URL是变量dynamicURL的值: getURL(dynamicURL);
《网页开发工具》第十二讲 动作脚本AS (5) 对于“窗口”,指定要在其中加载文档的窗口或HTML帧,步骤如下: ● 从下列保留目标名中选择: _self 指定当前窗口中的当前帧。 _blank 指定一个新窗口。 _parent 指定当前帧的父级。 _top 指定当前窗口中的顶级帧。 ● 输入特定窗口或帧的名称,就如同在HTML文件中命名它一样。 ● 选择“表达式”,然后输入计算该窗口位置的表达式。
《网页开发工具》第十二讲 动作脚本AS (6) 对于“变量”,选择一种合适的方法将已加载影片的变量发送到“URL”文本框中列出的位置上,步骤如下: ● 选择“用Get方式发送”将数量较少的变量附加到URL的末尾。例如,用此选项将 Flash影片中的变量值发送到一个服务端脚本中。 ● 当单独标题中的字符串很长时,可选择“用Post方式发送”将变量和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动作根据条件是否成立来执行动作。 动作脚本可以将一个动作重复指定的次数,或是在特定的条件成立时重复动作。使用 while、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");}
《网页开发工具》第十二讲 动作脚本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, i ); • i--; • } while (i > 0);
《网页开发工具》第十二讲 动作脚本AS • 3.使用for语句 • 多数循环都会使用某种计数器,以控制循环执行的次数。每执行一次循环就叫做一次迭代。可以声明一个变量并编写一条语句,每执行一次循环,该语句都会增加或减小变量。在 for 动作中,计数器和增加计数器的语句都是动作的一部分。在下面的示例中,第一个表达式(i = 4)是在第一次迭代之前评估的初始表达式;第二个表达式( i > 0)是每次运行循环之前进行检查的条件;第三个表达式(i--)被称为后表达式,在每次运行循环之后会对其进行评估。 • for (i = 4; i > 0; i--){ • myMC.duplicateMovieClip("newMC" + i, 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: " + • myObject[propertyName]); • }
《网页开发工具》第十二讲 动作脚本AS • 本示例将在“输出”窗口中生成如下结果: • myObject has the property: name, with the value: Joe • myObject has the property: age, with the value: 25 • myObject has the property: city, with the value: San Francisco • 如果想让脚本重复特定的子级类型,例如只重复子级影片剪辑,那么将for..in与typeof 运算符配合使用即可实现此目的。代码如下: