第 7 章 创建交互动画

116
第7第 第第第第第第

description

第 7 章 创建交互动画. 前言. 到目前为止,我们都是使用 Flash 作为创建图像和动画的工具,但是我们也能够使用 flash 将这些元素转换成动态的游戏、交互式界面的组件。为了成功地实现交互,应了解一些高级交互背后的逻辑知识。但用户不必像一位计算机程序设计员那样设计复杂的程序,而只在影片中添加一些简单的交互动作。. 前言. 所谓交互动画,是指动画浏览者可使用键盘、鼠标操作来控制动画的播放,或调转到电影的其他部分、移动对象、在表格里填写数据及执行其他各种操作。 - PowerPoint PPT Presentation

Transcript of 第 7 章 创建交互动画

Page 1: 第 7 章  创建交互动画

第 7 章 创建交互动画

Page 2: 第 7 章  创建交互动画

前言

到目前为止,我们都是使用 Flash 作为创建图像和动画的工具,但是我们也能够使用 flash 将这些元素转换成动态的游戏、交互式界面的组件。为了成功地实现交互,应了解一些高级交互背后的逻辑知识。但用户不必像一位计算机程序设计员那样设计复杂的程序,而只在影片中添加一些简单的交互动作。

Page 3: 第 7 章  创建交互动画

前言所谓交互动画,是指动画浏览者可使用键盘、鼠标操

作来控制动画的播放,或调转到电影的其他部分、移动对象、在表格里填写数据及执行其他各种操作。

Flash 中,交互动画是通过动作脚本 (ActionScript) 语言设置动作来产生的。动作 (action) 是使用 ActionScript 编写的命令集, ActionScript 是 Flash 的面向对象的编程语言。在最基本的情况下,动作将告诉Flash 影片如何执行。它们可以是简单的 ( 例如,告诉 Flash 向前跳跃并播放特定的帧 ) ,也可以是复杂的 ( 例如进行计算,然后根据结果执行某些操作 ) 。

Page 4: 第 7 章  创建交互动画

本章学习要点在创建交互动画时,最关键的步骤是设置指定事

件在发生时要执行的动作。事件就是触发动作执行的信号。在 Flash 8 中,播放头到达某个特定的帧时、或者用户单击了鼠标、或按下了键盘,都会根据相应的事件的设置,产生特定的动画效果。

本章学习要点:• 了解和使用 ActionScript• 使用基本动作添加交互作用

Page 5: 第 7 章  创建交互动画

本章主要内容

7.1 ActionScript简介 7.2 ActionScript语法规则 7.3 ActionScript基础 7.4 编写和调试脚本 7.5 事件与动作 7.6 动作脚本的提高

Page 6: 第 7 章  创建交互动画

第 7 章 创建交互动画第 7 章 创建交互动画

7.1 ActionScript 简介 ActionScript 是面向对象的脚本程序语言。

它的结构与 JavaScript 相似,都是采用面向对象的编程思想,但两者之间也存在着明显的区别。在 Flash 8 中, ActionScript 代码并不是任何地方都可以使用,应该将 ActionScript 代码添加到关键帧关键帧( Keyframe )、按钮按钮( Button )或影片剪辑影片剪辑( Movie Clips )中,并分别称之为帧动作、按钮动作及影片剪辑动作。在 Flash 8 中,利用 ActionScript 可实现交互功能,使用户对动画进行更灵活的控制。

Page 7: 第 7 章  创建交互动画

在 Flash 8 中,使用 ActionScript2.0 编程非常方便,可以在动作动作 -- 帧面板帧面板中直接输入脚本,也可以从弹出菜单或工具箱列表中直接调用语句、函数及运算符等元素。在编写过程中,输入的 ActionScript2.0 代码,系统会检查是否有语法错误并提示用户如何修改。

Flash 8 中的 ActionScript2.0 具有如下特性:自由编写脚本模式:用户可以在动作 - 帧面板

中直接输入脚本,也可以从弹出菜单或工具列表中直接调用语句、函数及运算符等元素。

Page 8: 第 7 章  创建交互动画

点运算符:在 Flash 8 中,用户可以使用点运算符获取和设置一个对象的属性和方法,包括电影剪辑实例的变量。

数据类型: Flash 8 的动作脚本支持字符串、数值、逻辑、对象和电影剪辑,用户能够在ActionScript 中使用不同类型的信息。

自定义函数:用户可以根据需要自己定义带参函数,让函数返回一个值,以便在脚本中重用代码块。

内置预定义对象:在 Flash 8 中已经内置了很多已定义的类对象,可以通过这些对象构造出更多的数据对象或访问和管理某些类型的信息。

Page 9: 第 7 章  创建交互动画

剪辑动作:可以使用 onClipEvent 动作直接给编辑区中的电影剪辑实例分配动作,如 mouseMove 、 data 和 load等事件。

调试器: Flash 8 在的调试方面进行了改进。使用调试器可以查看和修改在测试动画模式、Flash独立播放器或浏览器中播放的动画的变量和属性值,以便容易发现动作脚本中的问题。

新的面向对象编程模型: Flash 8引入了几个新的语言元素,如 class 、 extends 、 public 、get 、 set 、 import等。这些元素采用比以前更为标准的方式来实现面向对象的编程。

Page 10: 第 7 章  创建交互动画

XML 支持:使用预定义的 XML 对象可以把 ActionScript 转换为 XML 文档,然后传递到服务器端应用中,也可以用 XML 对象把 XML文档载入 Flash 动画中并加以解释。使用预定义的 XML Socket 对象可以创建不间断的服务器连接,为实时应用传递 XML数据。

提供上下文敏感帮助: Flash 8包含有动作 -帧面板中可用的每个动作的上下文敏感帮助。在编写脚本的过程中,可以获得与正在使用的动作有关的信息。

Page 11: 第 7 章  创建交互动画

7.2 ActionScript 语法规则 7.2.1 ActionScript 术语 ActionScript 根据其特定的语法规则使用专门的术语。与动作脚本相关的重要术语。

1 ) 动作动作 (action)(action) :指定一个动画在播放时做某些事情的一些语句。如 gotoAndPlay 将播放头跳转到指定的帧或场景并继续播放; getURL 则用于将影片链接到指定的网页或文件。

2 ) 事件事件 (events)(events): 一般情况,动作被触发时才会执行,起触发作用的部分就是事件。例如,鼠标的移动、按下与释放以及按下键盘上的某个按键等都是事件。

第 7 章 创建交互动画第 7 章 创建交互动画

Page 12: 第 7 章  创建交互动画

3 ) 类 (class) :是可以创建的数据类型,用于定义新的对象类型。要定义对象的类必须先创建一个构造函数。

4 ) 构造函数 (constructors): 用来定义类的属性和方法的函数。例如,以下代码通过创建名称为 circle 的构造函数来创建一个新的圆类。

function circle(x,y,radius){this.x=x;this.y=y;this.radius = radius;}

Page 13: 第 7 章  创建交互动画

5 ) 常量常量 (constants)(constants) :其值始终不变的属性。例如,数字 9;布尔值中的 true 和 false;键盘的按键 BACKSPACE 、 ENTER 、 TAB等。

6 ) 表达式表达式 (expressions)(expressions):由运算符和操作数组成,是动作脚本语句中能够产生值的任何一部分。例如, X+3 就是一个表达式。

7 ) 函数 (function): 用来传递参数并能返回值的可重复使用的代码块。例如, getVersion函数返回当前正在播放影片的 Flash 播放器的版本。

8 ) 参数 (arguments) :通过设置参数可以把值传递给函数。

Page 14: 第 7 章  创建交互动画

9 ) 标识符标识符 (identifiers)(identifiers) :用于识别某个变量、属性、对象、函数或方法的名称。标识符应遵循一定的命名规则:标识符是由字母、数字、下划线“ _” 或美元符号“ $” 组成,并且第 1 个字符必须为字母、下划线或美元符号。例如, myData 是一个合法的标识符, 2_mc 不是合法的标识符。

10 ) 事件处理程序事件处理程序 (handers)(handers) :是一种用来处理和管理事件的特殊动作。例如, onClipEvent 就是 ActionScript 的事件处理程序。

11 ) 实例实例 (instances)(instances) :是属于某个类的对象。一个类的每个实例都包含该类的所有属性和方法。例如,所有影片剪辑都是 MovieClip类的实例,都具有该类的属性。

Page 15: 第 7 章  创建交互动画

12 ) 实例名称实例名称 (instance name)(instance name) :是动作脚本中用来表示影片剪辑实例的惟一名称。用户可以使用“属性”面板为实例指定实例名称。

13 )属性属性 (property)(property) :用于定义对象的特性。例如 _visible 用于定义影片剪辑是否可见。

14 ) 方法方法 (methods)(methods) :指被指派给某一个对象的函数。一个函数被分配之后,它可以作为这个对象的方法被调用。

15 )对象对象 (objects)(objects) :是属性的集合。每个对象都有自已的名字和值,通过对象可以访问某一类型的信息。

Page 16: 第 7 章  创建交互动画

16 )数据类型数据类型 (data type)(data type) :定义变量或 ActionScript元素进行通信的信息的类型。在 AS 中,数据类型是字符串、数字、布尔值、对象、影片剪辑 (Movie Clip) 、未定义或空值。

17 )关键字关键字 (keyword)(keyword) :是在 AS 语言中具有特殊含义的单词。关键字不能作为变量、函数等使用。

18 )目标路径目标路径 (target path)(target path) :用于按照 Movie clip实例名、变量和影片中的对象的形式传递信息。例如: menuBar.item1.selected

这是通往变量 selected 的目标路径,它位于MovieClip item1 中, item1又位于menuBar 中。

19 )变量变量 (variable)(variable) :是存储位置,用于保持信息和值。变量可以用于固定的或临时的存储,可以在影片播放时进行检索,以便在脚本中使用。

Page 17: 第 7 章  创建交互动画

7.2.2 ActionScript 语法规则 ActionScript 具有一定的语法规则,用户必须遵守这些语法规则才能创建正确编译和运行的动作脚本。下面介绍适用于所有 ActionScript 的一般语法规则。

1 、点语法在 ActionScript 中,点“ .” 用于指明与某个对象

或电影剪辑相关的属性或方法。也可用于标识影片剪辑、变量、函数或对象的目标路径。点语法表达式是以对象或影片剪辑的名称对象或影片剪辑的名称开始,后跟一个点,最后是要指定的属性、方法或变属性、方法或变量量。例如 , 表达式“ dog._x” 是指影片剪辑实例 dog 的 _x( 指示影片剪辑的 x轴位置 )属性。

Page 18: 第 7 章  创建交互动画

点语法还使用特殊的别名: _root 和 _parent 。 _root 是指主时间轴,使用 _root 创建一个绝对路径。例如, _root. MyMC.play(); 使用别名 _parent引用当前对象嵌入到的影片剪辑,也可用 _parent 创建一个相对目标路径。

2 、大括号动作脚本事件处理函数、类定义以及函数用大括号“ {}” 组合在一起形成块,如下面示所示。

on (release) { myDate=new Date(); currentMonth=myDate.getMonth();}

Page 19: 第 7 章  创建交互动画

3 、小括号(简称括号)小括号“()”是表达式中的一个符号,具有运算符的最优先级别。在定义函数时,要将所有参数都放在括号中,如下所示:

function myuser (name,age) { …}调用函数时,要将传递的所有参数放在括号中,

如下所示:myuser (“june”,18);括号还可以用来改变 ActionScript 的优先级或增强 ActionScript 的易读性。

Page 20: 第 7 章  创建交互动画

4 、分号 ActionScript 语句以分号“;”结束,如下所示:myMC_x= myMC_x+10 ;5 、字母的大小写 在 ActionScript 中,只有关键字区分大小写。

对于其余的 ActionScript ,可以使用大写字母,也可以使用小写字母。例如,下面两个语句是等价的。

fly.gotoAndStop(15);FLY.gotoAndStop(15);但是,遵守一致的大小写约定是一个好的习惯,这

样,在阅读脚本代码时更易于区分函数或变量的名称。如: newDate 、 myColor等。

Page 21: 第 7 章  创建交互动画

6 、关键字 在 ActionScript 中保留了一些标识符作

为内置对象、函数等的标识。这些标识符就是关键字,用户在编写脚本代码的过程中,不能用这些关键字作为变量、函数或自定义对象的标识,而且在脚本代码中使用关键字,必须要小写。

例如:在 VAR myage=20; 语句中由于关键字 var 写成了大写, Flash 在执行时会报错。

Page 22: 第 7 章  创建交互动画

7 、注释 在 ActionScript 中使用字符“ //” 来表明其

后的内容为注释内容,它们在脚本编辑窗口中以灰色显示,注释语句不会影响 Flash 输出文件的大小,只是便于阅读和理解脚本。例如:

on (press) {

myDate=new Date(); // 创建新的 Date 对象cu_year= myDate.getYear(); // 获取当前日期中

的年份}

Page 23: 第 7 章  创建交互动画

如果不想让某些脚本代码运行,可以将其“注释掉”。在命令行的开头添加 /* ,在末尾添加 */形成注释块,如下代码所示:

/* with (ball) { x+=10; _y+=10; } */

Page 24: 第 7 章  创建交互动画

8 、常量 常量是在 AS 中的一种术语或属性,它们具有特定的值并保持不变。在脚本中,它们全都以大写字母表示。常量包括三种 AS 对象: KeyKey 对对象象、 MathMath 对象对象和 NumberNumber 对象对象。

下面的脚本使用了 Key 对象来测试空格键是否被按下:

If(Key.isdown(Key.SPACE)){ laser.shoot(1);}

空格键有一个常值,它是 Key 对象的一个属性。当空格被按下,下面一行的语句将被执行。

解释下面两例子:area=Math.PI*(radius*radius);duration=Number.MAX_VALUE;.

Page 25: 第 7 章  创建交互动画

7.3 ActionScript 基础 7.3.1 数据类型 数据类型是描述变量或动作脚本元素可以包含的信息的种类。 Flash 中内置了两种数据类型:原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值,它们都有一个常数值,因此可以包含它们所代表的元素的实际值。引用数据类型是指影片剪辑和对象,它们的值可能发生改变,因此它们存放对元素的实际值的引用。另外,还有两类特殊的数据类型:空值和未定义。

第 7 章 创建交互动画第 7 章 创建交互动画

Page 26: 第 7 章  创建交互动画

1 、字符串 字符串是由字母、数字、标点符号等组成的字符序列。在 ActionScript 中应用字符串时要将其放在单引号或双引号中。例如,语句 firstname =“Beijing”;

可以使用加法“ +”运算符连接或合并两个字符串。 ActionScript 会将字符串前面或后面的空格作为该字符串的一部分。例如:

firstname=”China”;greeting=”Welcome to”+firstname;字符串变量 greeting 的值是:“Welcome to Chin

a” 。字符串是区分大小写的。例如:“ welcome” 和“WELCOME” 是不同的字符串。

Page 27: 第 7 章  创建交互动画

2 、数字 数字是双精度浮点数,可以使用算术运算符(如: + 、 - 、 * 、 / 、 % 、 ++ 、 --等)对数字进行运算,也可以使用内置的数学对象 Math 和 Number类的方法来处理数字。 例 如 , Math.sqrt(36); 指 使 用 sqrt()(平方根)方法返回数字 36 的平方根。

Page 28: 第 7 章  创建交互动画

3 、布尔值布尔值是 true 或 false 中的一个。在动作脚本

中,布尔值经常与逻辑运算符或比较运算符一起使用,以控制程序流程。例如:

onClipEvent (enterFrame) {

if (userName ==false && password == false){

stop( );

}

}

Page 29: 第 7 章  创建交互动画

4 、对象( Object ) 对象是属性 (property) 的集合。每个属性都有名称和值,属性值可以是任何的 Flash 数据类型,甚至可以是对象数据类型,可以使对象相互包含(即嵌套)。要指定对象及其属性,可以使用点运算符。例如,以下代码中 book 是 desk 的属性,而 desk又是 house 的属性。

house . desk . book;此外,可以使用内置对象来处理和访问特定种类

的信息。例如, Math 对象具有一些方法,这些方法可以对传递给它们的数字执行数学运算。例如:

squareRoot=Math.sqrt(81);

Page 30: 第 7 章  创建交互动画

动作脚本中 MovieClip 对象具有一些方法,用户可以使用这些方法控制舞台上的影片剪辑元件实例。

如:使用 play( ) 和 nextFrame( ) 方法: mc1InstanceName.play( );

mc2InstanceName.nextFrame( );

用户可以创建自定义对象来组织 Flash 应用程序中的信息。若要使用动作脚本向应用程序添加交互操作,将需要许多不同的信息,例如,用户的密码、物体运动的速度、已加载的帧数等。

Page 31: 第 7 章  创建交互动画

5 、影片剪辑( MovieClip ) 影片剪辑是 Flash 应用程序中可以播放

动画的元件,是惟一引用图形元素的数据类型。影片剪辑类型允许使用影片剪辑类的方法控制影片剪辑元件。可以使用点运算符调用这些方法,如下所示:

my_MC.play( );

my_MC.nextFrame( );

Page 32: 第 7 章  创建交互动画

6 、空值( Null) 空值数据类型只有一个 null值,此值意味“没有值”,即缺少数据。 null 值可以用在各种情况中。下面是一些示例:

指示变量尚未接收到值 指示变量不再包含值 作为函数的返回值,指示函数没有返回的值 作为函数的参数,说明省略了一个参数 7 、未定义( Undefined )

未定义的数据类型有一个值,即 undefined ,用于尚未分配值的变量。

Page 33: 第 7 章  创建交互动画

7.3.2 基本命令 在 Flash 8 中,可用的脚本命令达上千条,每条都记住是很困难的。本节重点介绍在动画制作过程中,常用的一些命令常用的一些命令。有兴趣的读者可以参考这方面的专著。

1 、 stop (停止)和 play (播放)命令 在动画播放过程中如果没有特殊的说明,

动画将沿着时间轴面板上的帧播放下去。使用 stop 命令停止正在播放的动画。当动画被停止播放之后,可以使用 play 命令使动画继续播放。 play 命令和 stop 命令不带任何参数,它们的语法格式分别为: stop() 和 play() 。

Page 34: 第 7 章  创建交互动画

2 、 goto (跳转)命令 goto 是无条件跳转命令。在 Flash 中它可以

不受约束地跳转到任何场景的任意一帧。 goto有两种基本的跳转模式:

gotoAndPlay :是指从当前帧跳转到指定的场景或帧继续播放。

gotoAndStop :是指从当前帧跳转到指定的场景或帧停止播放。

goto 命令的格式为:gotoAndPlay (场景 , 帧)和 gotoAndStop (场景 , 帧)。

   场景 : 表示将跳转到的场景名称; 帧 : 表示将跳转到该场景的第几帧。

Page 35: 第 7 章  创建交互动画

3 、 stopAllSounds 命令 stopAllSounds 命令是指停止动画文件中当前正在播放的所有声音。该命令没有参数,其语法为 stopAllSounds ()。例如:下面的代码可以应用到一个按钮,当单击此按钮时,将停止动画文件中的所有声音。

on (release) {

stopAllSounds();

}

Page 36: 第 7 章  创建交互动画

4 、 getURL 命令 getURL 命令用于设置超级链接,其语法形式如下:

getURL(url [, window [,variables]])参数含义如下:url :用来设置链接的地址。window :可选参数,设置链接网页的打开方

式,它有四种方式:“ _self” 在当前窗口中打开链接,“ _blank” 在一个新窗口中打开链接,“ _parent” 在父级窗口中打开链接,“ _top” 在最上层的窗口中打开链接。

Page 37: 第 7 章  创建交互动画

Variables : 用于设置发送变量的 GET 或 POST方法。如果没有变量,则省略此参数。 GET 方法将变量追加到 URL 的末尾,该方法用于发送少量的变量; POST 方法在单独的 http 标头中发送变量,该方法用于发送大量的变量。

在实际运用中, getURL往往与按钮配合使用。如:

on (release) { getURL(“http://www.163.com”,”_blank”);}当按下按钮时,将在一个新的窗口中打开指定

的网页。

Page 38: 第 7 章  创建交互动画

5 、 fscommand 命令 fscommand 命令用来与外界进行沟通,还可以控制 Flash Player 播放器。其语法形式为:

fscommand(command, parameters); command :是 fscommand 命令可以执行

的命令。  parameters :是执行命令的参数。

Page 39: 第 7 章  创建交互动画

6 、 loadMovie 命令和 unloadMovie 命令 loadMovie 命令和 unloadMovie 命令是一对

作用相反的命令,用来实现调入和释放外部影片。它们的语法格式:

(un)loadMovie ( url,level / target [,variables] )url: 表示要加载或卸载的 SWF文件或 JPEG文

件的绝对或相对路径。target :用于指向目标影片剪辑的路径。level: 该参数的值必须为一个整数,用来指定播

放器中影片将被加载到的级别。variables :可选参数,用于指定发送变量所使用

的 HTTP 方法。该参数必须是字符串 GET 或 POST 。如没有要发送的变量,则省略该参数。

Page 40: 第 7 章  创建交互动画

7 、 setProperty 和 getProperty 命令 setProperty 命令用于设置影片剪辑实例的属性值。 getProperty 命令用于获取影片剪辑实例的属性。影片剪辑实例的属性包括大小、位置、可见性和透明度等。

setProperty 命令的语法形式:setProperty( 目标,属性,值 )getProperty 命令的语法格式:getProperty( 目标,属性 )目标:要设置其属性的影片剪辑的实例名称。属性:要设置的属性。值:属性的设置值。

Page 41: 第 7 章  创建交互动画

8 、 duplicateMovieClip 和 removeMovieClip 命令

使用 duplicateMovieClip 命令,可以在播放动画时复制一个影片剪辑。复制的影片剪辑将从第一帧开始播放。如果删除父级影片剪辑,则复制的影片剪辑也会被删除。使用 removeMovieClip 命令可以删除由 duplicateMovieClip 命令创建的影片剪辑实例。

duplicateMovieClip 命令语法格式为:duplicateMovieClip(target, newname, depth)

Page 42: 第 7 章  创建交互动画

  target : 要复制的影片剪辑的路径与名称。  Newname :复制出来的新影片剪辑的唯一名称。

 depth :已复制出来的影片剪辑的唯一深度级别。

removeMovieClip 命令语法格式为:removeMovieClip(target)

其中, target 指用 duplicateMovieClip()命令创建的影片剪辑实例的名称。

Page 43: 第 7 章  创建交互动画

9 、 startDrag 和 stopDrag 命令 使用 startDrag 命令,可以在播放动画时拖动

一个影片剪辑,并且可以设置对象的拖动范围。当对另一个影片剪辑应用 startDrag 命令时,会停止对当前对象的拖动,因为一次只能拖动一个影片剪辑。用 stopDrag 命令可停止当前的拖动操作。 startDrag 命令语法格式为:

startDrag(target,[lock ,left , top , right, bottom])  target : 要拖动的影片剪辑的实例名称。  lock : 一个布尔值,指定可拖动影片剪辑是锁

定到鼠标位置中央 (true) ,还是锁定到用户首次单击该影片剪辑的位置上 (false) 。此参数是可选的。

Page 44: 第 7 章  创建交互动画

  left 、 top 、 right 、 bottom :相对于影片剪辑父级坐标的值,这些坐标值指定该影片剪辑的约束矩形范围。这些参数是可选的。

stopDrag 命令语法格式为: stopDrag() 说明:该命令无参数,其作用是停止当前的拖动操作。

例如:在下面的代码中,按下按钮时,拖动影片剪辑;释放按钮,停止拖动影片剪辑。

on (press) { startDrag(this,true); }on (release) { stopDrag();}

Page 45: 第 7 章  创建交互动画

10 、 with 命令 With 的作用是临时改变语句所起作用的目标。

Flash 8 中允许用户使用 object 参数指定一个对象(比如影片剪辑),使用 statement(s) 参数计算该对象中的表达式和动作。 with 命令语法格式为:

with (object) {statement(s);} object :动作脚本对象或影片剪辑的一个实例。 statement(s) :包括在大括号中的一个动作或一

组动作。

Page 46: 第 7 章  创建交互动画

例如:下面的代码设置 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);

Page 47: 第 7 章  创建交互动画

11 、 _root 命令 _root 命令用来指定主场景中的实例

对象或变量。其语法为: _root.movieClip 或 _root.action 。它包含两个参数,其含义如下:

  movieClip :是电影剪辑实例名称。 action :是指定动作变量的名称。

Page 48: 第 7 章  创建交互动画

12 、 tell 目标命令 tell 目标命令用于通知目标对象。其语

法格式为“ tell target ( target ),它包含一个参数,其含义是希望通知对象的实例名称。

13 、 ifFrameLoaded 命令 ifFrameLoaded 命令用来测试影片中

指定的帧是否已经下载完毕。其语法格式为: ifFrameLoaded (场景,帧)

Page 49: 第 7 章  创建交互动画

14 、 onClipEvent 命令 onClipEvent 命令是 MovieClip 的事件触发程

序,对影片剪辑实例指定的事件发生时响应。其语法格式为:

onClipEvent ( movieEvent ) ;{…} movieEvent 是和影片剪辑实例相联系的一个

动作事件,它可以是下列值:  load :影片剪辑实例在时间轴中出现时激活事

件。  enterFrame :在播放到某一帧时激活事件。  mouseMove :只要鼠标移动就激活事件。

Page 50: 第 7 章  创建交互动画

  mouseDown :鼠标左键按下时激活事件。 mouseUp :鼠标左键松开时激活事件。   keyDown :当某一键被按下时激活事件。   keyUp :当某一键被松开时激活事件。   data :在 loadVariables 或 loadMovie 动作读

入数据时激活事件。例如:使用 mouseMove 事件,同时使用 xmouse

和 ymouse属性获取鼠标当前的坐标值。onClipEvent ( mouseMove ) {stageX=_root.xmouse;stageY=_root.ymouse;}

Page 51: 第 7 章  创建交互动画

7.3.3 条件循环控制1 、条件控制条件语句有 3 种格式:格式 1 :if (条件 ) { 动作序列 1}条件:计算结果为 true 或 false 的表达式。动作序列:在条件计算结果为 true 时,执行的一系列命令。

执行过程:如果满足条件(结果为 true 时),执行动作序列 1;如果条件为 false ,则 Flash 将跳过花括号内的语句,继续运行花括号后面的语句。

Page 52: 第 7 章  创建交互动画

例如: inputName=”myName”;pw=”88888888”;if (input==inputName &&password==pw) { gotoAndPlay(play);}gotoAndPlay(wrong);首先判断给定的条件 (input==inputName &&pass

word==pw) 是否成立,若成立将执行花括号中的语句: gotoAndPlay(play) ,然后再执行花括号后面的语句;若条件不成立,直接执行 if 语句的后续语句: gotoAndPlay(wrong) 。

Page 53: 第 7 章  创建交互动画

格式 2 :if (条件 ) { 动作序列 1}else {动作序列 2 }执行过程:首先判断条件是否成立,如果条

件成立执行动作序列 1;条件不成立,则执行动作序列 2 。

Page 54: 第 7 章  创建交互动画

例如:inputName=”myName”;pw=”88888888”;if (input==inputName &&password==pw) { gotoAndPlay(play);}else {gotoAndPlay(wrong);} 首先判断给定的条件 (input==inputName

&&password==pw) 是否成立,成立将执行语句: gotoAndPlay(play);不成立则执行: gotoAndPlay(wrong);

Page 55: 第 7 章  创建交互动画

格式 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

Page 56: 第 7 章  创建交互动画

例如 :inputName=”myName”;pw1=”88888888”;pw2=”81111118”;if (input==inputName &&password==pw1) { gotoAndPlay(play1); }else if (input==inputName &&password==pw2){gotoAndPlay(play2); }else {gotoAndPlay(wrong);}

Page 57: 第 7 章  创建交互动画

2 、循环控制当条件成立时,将动作重复执行指定的次数。while 语句的语法格式:while(条件 ) {

指令体}条件:每次执行 while 语句块时都要重新计

算的表达式,结果为 true 或 false 。 指令体:当条件为 true 时要重复执行的指

令序列。

Page 58: 第 7 章  创建交互动画

说明:执行过程:首先计算条件表达式的值,若表达

式的值为 true ,执行花括号中的指令体。再次判断条件是否成立,如果条件仍然成立,再执行指令体,直到条件表达式不成立为止。当条件为 false 时,跳过指令体,并执行 while 指令体之后的第一条语句。

例如,下面的代码段,将循环执行 5次。var i=1;while (i<=5) { myMC.duplicateMoiveClip(“newMC”+i,i); ++i; }

Page 59: 第 7 章  创建交互动画

do… while 语句的语法格式:do {

指令体} while (条件 );说明:首先执行指令体,然后判断循环条件,若为 true ,则重复执行循环体,直到条件为假时退出循环体。

do… while 语句与 while 语句的区别是:do… while 语句至少执行一次循环体。

Page 60: 第 7 章  创建交互动画

例如,使用 do… while 语句表示上述代码:var i=1;

do {

myMC.duplicateMoiveClip(“newMC”+i,i);

++i;

}while (i<=5);

Page 61: 第 7 章  创建交互动画

for 语句的语法格式:for (初始表达式 ;条件 ;增值表达式 ) { 指令体 }说明:首先计算初始表达式,然后判断条件,若为 true ,则执行指令体,之后执行增值表达式,再判断条件,重复以上过程;若条件表达式为假,则退出循环体执行其后面的语句。

例如,用 for 表示上面介绍的代码:for(i=1; i<=5; i++){myMC.duplicateMoiveClip(“newMC”+i,i);}

Page 62: 第 7 章  创建交互动画

7.3.4 变量、运算符及表达式、函数1 、变量 变量是语句中可以改变的参数值。变量是

编写脚本程序时最重要的数据来源,它是存储信息的容器,容器本身绐终不变,但内容可以改变。在动画播放时,通过变量可以记录和保存用户操作的信息、记录动画播放时更改的值,或计算某个条件是真还是假等。

在动作脚本中首次定义一个变量时,最好赋给它一个已知的值,称为初始化变量。变量被赋值时,这个变量的数据类型将被确定。变量具体的应用,用户可以在后面的实例中体会。

Page 63: 第 7 章  创建交互动画

变量的命名变量的命名必须遵循以下规则:变量名必须是一个标识符。变量名不能是关键字或逻辑常量。变量名在其作用范围内必须是唯一的。

Page 64: 第 7 章  创建交互动画

变量的类型在 Flash 8 的动作脚本中,给变量赋值时会自

动确定变量的数据类型。例如:myAge=20;myName=”surry”; 在表达式 myAge=20 中,变量 myAge

是数值型变量。在表达式 myName=”surry” 中,系统将自动把变量 myName 的数据类型确定为字符串型。如果声明了一个变量,但又没有给变量赋值的话,那么,这个变量不属于任何类型,在 Flash 中它被称为未定义型( undefined )。

Page 65: 第 7 章  创建交互动画

变量的作用范围 变量的作用范围是指能够识别和引用该变量的区域。在动作脚本中可将变量分为全局变量和局部变量(或称本地变量)。全局变量可在所有时间轴中共享;局部变量只在它所在的代码块内(花括号之间)有效。在动作脚本中使用局部变量可以有效防止变量名的冲突,在函数体内使用局部变量会使函数成为可重用的独立代码段。而全局变量通常用于完成不同代码段之间数据的传递任务,例如,要在一个代码块中引用另一个代码块中的变量,或者是在整个动画中传递某个变量的值。

Page 66: 第 7 章  创建交互动画

变量的声明 声明全局变量,可以使用 set Variables 命

令或赋值操作;声明局部变量,可以在函数体内使用 var 语句。局部变量作用范围只限于它所在的代码块内。

在动作脚本中使用变量 必须在动作脚本中声明变量,然后才能

在表达式中使用这个变量。如果使用一个未声明的变量,该变量的值将是 NaN 或 undefined ,脚本将产生意外的结果。

Page 67: 第 7 章  创建交互动画

2 、运算符及表达式 运算符是指能够对常量和变量进行运算

的符号。在 Flash 8 中提供了大量的运算符,如算术运算符、字符串运算符和逻辑运算符等。如果需要使用运算符,可以在一般的函数或语句的 value文本框中直接输入,也可以在命令列表窗口中选择 Operators选项,在子菜单中双击一个运算符,添加到命令编辑窗口中。

表达式是指将运算符和运算对象连接起来符合语法规则的式子。也可以理解为计算并能返回一个值的任何语句。

Page 68: 第 7 章  创建交互动画

算术运算符和算术表达式 算术运算符可以执行加、减、乘、除

和其他算术运算。其中增量或减量运算符最常见的用法是 i++ 、 ++i 或 i-- 、 --i 。算术表达式是将算术运算符和括号将运算对象连接起来的符合语法规则的式子。

运算符 执行的运算 运算符 执行的运算+ 加法 - 减法* 乘法 / 除法% 求模 ++ 递增-- 递减    

数值运算符数值运算符

Page 69: 第 7 章  创建交互动画

比较运算符和比较表达式 比较运算符用于比较两个表达式的值,

然后返回一个布尔值( true 或 false )。比较运算符最常用于条件语句和循环语句中。

运算符 执行的运算 运算符 执行的运算

> 大于 < 小于

>= 大于或等于 <= 小于或等于

比较运算符比较运算符

Page 70: 第 7 章  创建交互动画

逻辑运算符和逻辑表达式 逻辑运算符是对布尔值( true 或 false )

进行比较,然后返回第三个布尔值。 逻辑运算符和操作数连在一起形成逻辑

表达式。在逻辑表达式中当两个操作数都为true 时,逻辑与表达式才为真,否则全为假;当两个操作数都为 false 时,逻辑或表达式才为假,否则全为真。

运算符 执行的运算 运算符 执行的运算&& 逻辑“与” || 逻辑“或”

! 逻辑“非”    

逻辑运算符逻辑运算符

Page 71: 第 7 章  创建交互动画

赋值运算符和赋值表达式 可以使用赋值运算符( = )为变量赋值。赋值运算符将变量和表达式连接起来形成赋值表达式。例如: myage=18;

还可以使用赋值运算符在一个表达式中给多个变量赋值,例如: a=b=c=6;

运算符 执行的运算 运算符 执行的运算= 赋值 += 相加并赋值-= 相减并赋值 *= 相乘并赋值/= 相除并赋值 %= 求模并赋值

<<= 按位左移位并赋值 >>= 按位右移位并赋值>>>= 右移位填零并赋值 &= 按位“与”并赋值

|= 按位“或”并赋值 ^= 按位“异或”并赋值

赋值运算符 赋值运算符

Page 72: 第 7 章  创建交互动画

等于运算符和等于表达式 等于运算符( == )可以确定两个操作数的值

或标识是否相等并返回一个布尔值。如果操作数为字符串、数字或布尔值,它们将通过值进行比较。如果操作数为对象或数组,它们将通过引用进行比较。等于运算符和操作数连在一起形成等于表达式。例如: if (n==100) 。

如果将表达式写成: n=100 ,则是错误的。该表达式完成的是赋值操作而不是比较操作。

完全等于运算符( === )与等于运算符( == )相似,但有区别:完全等于运算符不执行类型转换。如果两个操作数属于不同的类型,完全等于运算符会返回 false 。不完全等于运算符( !== )会返回完全等于运算符的相反值。

Page 73: 第 7 章  创建交互动画

运算符 执行的运算 运算符 执行的运算

== 等于 != 不等于

=== 完全等于 !== 完全不等于

相等运算符 相等运算符

提示:当在同一语句中使用两个或多个运算符时,动作脚本按照标准的等级来决定哪一个运算符优先执行。

Page 74: 第 7 章  创建交互动画

3 、函数 函数是一种一次编写后可以在动画文件

中反复使用的脚本代码块。如果将值当作参数传递给函数,该函数将对这些值执行运算。函数也可以返回值。

动作脚本中的函数包含内置函数和自定义函数两大类。

Page 75: 第 7 章  创建交互动画

内置函数 内置函数就是动作脚本中已经定义好的函数,用户可直接使用这些函数。用户可以在“动作”面板的“全局函数”类别中找到Flash 提供函数。

若要调用函数,只需使用函数名称并传递所有必需的参数即可,例如:

isNaN(someVar); getTimer(); eval(“someVar”);

Page 76: 第 7 章  创建交互动画

自定义函数 自定义函数是由用户根据需要自已定义

的函数。在 Flash 中,允许用户创建自定义函数来执行一系列语句,对传递过来的值进行操作,并可以返回值。在自定义函数中,最好对它的输入、输出和用途作详细的注释,以便于用户的理解和使用。函数定义好以后,就可以从任意一个时间轴中调用它。

Page 77: 第 7 章  创建交互动画

( 1 )定义函数 函数和变量一样,都附加在定义它们的

影片剪辑的时间轴上,调用时必须使用目标路径才能调用它们。要定义一个时间轴函数,可以使用 function 动作,后跟一个函数名、要传递给该函数的参数以及指定函数用途的动作脚本语句。

例如,定义一个求圆面积的函数,函数名为 areaOfCircle ,函数所带参数为 radius :

function areaOfCircle (radius) {return Math.PI*radius*radius;}

Page 78: 第 7 章  创建交互动画

( 2 )将参数传递给函数 参数是函数对其执行代码的元素。例如,

下面的函数有两个参数 initials 和 finalScore 。function scorecard(initials, finalScore) { card.display = initials; card.score = finalScore;} 在调用函数时,需将必需的参数传递给函

数。函数会用传递的值替换函数定义中的参数。下面的函数调用会把值 "Jeb" 赋给变量display ,并把值 100赋给变量 score 。

scorecard("Jeb", 100);

Page 79: 第 7 章  创建交互动画

( 3 )从函数中返回值通常希望定义的函数能返回一个确定的值,

使用 return 语句可以从被调函数中返回值。在函数中使用 return 语句应遵守以下规则:

若需要被调函数返回一个值,必须在被调函数中加入一条 return 语句。

如果被调函数中没有 return 语句,函数将返回一个不确定的值。

若不需要被调函数返回值,使用“ void”定义无类型,并且不要加入 return 语句。

Page 80: 第 7 章  创建交互动画

( 4 )调用自定义函数 可以使用目标路径从任何时间轴调用函数,

如果函数是使用 _global 标识符声明的全局函数,则无需使用目标路径即可调用函数。

若要调用函数,可以输入函数名称的目标路径,若带有参数,还应在括号内传递所有必需的参数。例如,下面的语句将在主时间轴上调用影片剪辑 mymc 中的函数 abc() ,向其传递参数 5 ,然后将结果存储在变量 wab 中: var wab=_root.mymc.abc(5);

Page 81: 第 7 章  创建交互动画

脚本范例分析通过上面的学习相信读者已经对脚本有了一些基础性的认识,但为了读者更加系统的掌握动作脚本的构成,在下面就对一个脚本范例进行了详细的分析。脚本范例如下:on(press){x=1000;y=“say";if(x>=500&&y= ="say"){gotoAndPlay("hello");}else{gotoAndPlay("bye"); }}

Page 82: 第 7 章  创建交互动画

脚本范例分析在这个脚本范例中,一共经过了这样几步:( 1 )首先使用了一个鼠标事件动作 on ,而该事件动作的处理函数

则是 release,这条语句的作用是当鼠标点击某个对象时,则执行下面的语句。

( 2 )当定义过鼠标事件后,接着声明了两个变量 x和 y,并对 x赋了一个数值型数据 1000,对 y 赋了一个字符型数据 "say"。

( 3 )接下来就是 if语句,当 if语句中的条件成立时,则执行 gotoAndPlay(“hello”)动作,当 if语句中的条件不成立时,就执行else后面的语句 gotoAndPlay(“bye”)动作。

( 4 )在 if语句的条件中同时出现了数值运算符与字符运算符。在对这个表达式进行计算时,应当首先计算前面表达式的值,这时已经知道 x的值为 1000,通过这个表达式判断 1000>=500是成立的。然后再判断逻辑与后面的表达式也是成立的。而逻辑与就是只有两个都成立时,该表达式才成立。这时就可以断定 if后面的条件是成立的。

( 5 )当条件成立时,就执行 gotoAndPlay("hello")动作,就播放hello 影片剪辑。

Page 83: 第 7 章  创建交互动画

7.4 编写和调试脚本

在 Flash 8 中,用户可以将编写的脚本嵌入到 FLA文件中,也可以在计算机上存储为外部文件,这样便于在多个 FLA文件中重用代码。

要编写嵌入的脚本,可以使用“动作”面板并将该动作附加到某一按钮或影片剪辑,或者附加到时间轴的一个帧中。要编写外部脚本文件,可以使用任何文本编辑器或代码编辑器。

要测试脚本,可以使用 Flash Player 的专用调试版本来帮助排查故障。

第 7 章 创建交互动画第 7 章 创建交互动画

Page 84: 第 7 章  创建交互动画

7.4.1 使用动作面板和脚本窗口 “动作”面板是 Flash 8 提供编辑动

作脚本的专用环境,在 Flash 8 中,取消了用于编辑简单命令的普通模式,对“动作”面板的功能进行了扩充和增强,在代码输入的过程中提供代码提示功能,使用“动作”面板仍然可以方便地进行脚本编写和修改操作。

Page 85: 第 7 章  创建交互动画

1 、使用“动作”面板 单击“窗口”→“开发面板”→“动作”

命令,或者按下〈 F9〉键打开如下图所示的“动作”面板。

““动作”面板界面动作”面板界面

Page 86: 第 7 章  创建交互动画

动作工具箱:包含了所有的动作脚本命令和相关的语法。图标是命令夹,单击打开命令夹,双击它或者用鼠标拖动它到动作编辑区。

脚本导航器:在动作工具箱的下方显示用户正在进行添加的命令或脚本的位置。如果单击脚本导航器中的某一项目,则与该项目关联的脚本将出现在“脚本”窗格中,并且播放头将移到该位置。如果双击脚本导航器中的某一项,则该脚本会被固定。

动作编辑区:是进行动作脚本输入、编辑的主要区域。针对当前对象脚本代码的多少可调整该区域的大小。

工具栏:含有常用的功能按钮。

Page 87: 第 7 章  创建交互动画

2 、使用“脚本”窗口 在 Flash 8 中,可直接在“动作”面板中输

入添加脚本代码,脚本代码是嵌入在动画文件中的。在 Flash Professional 8 中,可以使用“脚本”窗口添加脚本代码。在“脚本”窗口中输入的脚本代码是以脚本文件 (AS)形式保存的,在动画文件中,可以使用 #include 语句来访问存储在外部的脚本代码文件。

选择“文件”→“新建”→“动作脚本文件”,或者选择“文件”→“打开”,打开现有 AS 文件的同时打开“脚本”窗口。

不管是使用“动作”面板还是使用“脚本”窗口,它们均使用相同的动作脚本编辑器。

Page 88: 第 7 章  创建交互动画

1 、语法突出显示 在动作脚本中,

如果使用了错误的动作脚本,脚本将不会运行。用户可以选择“编辑”→“首选参数”命令打开如右图所示的“首选参数”对话框。

7.4.2 使用动作脚本编辑器 “ “首选参数”对话框首选参数”对话框

Page 89: 第 7 章  创建交互动画

2 、编写触发代码提示的代码 使用动作脚本编辑器, Flash 可以检测到正

在输入的动作并显示代码提示,即包含该动作完整语法的工具提示,或列出可能的方法或属性名称的弹出菜单。

使用动作脚本 2.0 ,可以精确键入基于内置类(如: Button 、 Array等)的变量,这样可以使动作脚本编辑器显示该变量的代码提示。例如:

var mames:Array=new Array();names.只要加入句点“ .” , Flash 就会显示可用于 Array

对象的方法和属性的列表,因为已经将该变量的类型指定为数组。

Page 90: 第 7 章  创建交互动画

3 、检查语法 使用动作脚本编辑器编辑动作脚本时,要检查当前的脚本中是否存在语法错误,用户可以在动作脚本输入完成之后(或对其中一部分脚本),单击动作编辑区上方的“语法检查”按钮,若脚本中没有语法错误,则系统将显示“此脚本中没有错误”信息框;若脚本中有语法错误,系统会提示脚本有错误,并在“输出”窗口显示错误的信息。

另外,用户还可以在动画制作完成后,通过“窗口”→“测试影片”命令测试动画效果的过程中检查动作脚本代码,代码中的语法错误将列在“输出”面板中。用户还可以检查代码块两边的小括号、花括号或中括号是否齐全。

Page 91: 第 7 章  创建交互动画

4 、设置代码格式 设置格式选项 在设置“自动套用格式选项”后,设置将自

动应用于编写的代码,但不应用于现有代码。要将所作设置应用于现有代码,用户必须手动操作。

使用自动缩进 在默认情况下自动缩进功能是打开的。在“ ( ” 或“ {” 之后键入的文本将按照动作脚本首选参数中的“制表符大小”设置自动缩进。要关闭自动缩进,在动作脚本首选参数中取消选择“自动缩进”。 启用或禁用行号和自动换行 单击按钮,在“视图选项”弹出菜单中,启

用或禁用“查看行号”和“自动换行”。

Page 92: 第 7 章  创建交互动画

7.4.3 调试脚本 脚本代码输入完成后,必须对所输入的脚

本代码进行调试,以便于发现脚本中是否存在错误,调试脚本通常使用以下两种方法。

1 、使用“调试器”面板 可使用系统提供的“调试器”来查找运

行动画文件时出现的错误。用户可以在测试模式下对本地文件进行调试,也可以对远程服务器上的文件进行调试。使用“调试器” 可在播放动画文件时显示和修改变量和属性的值,可以在动作脚本中设置断点。断点会停止动画播放并跟踪代码,然后回到脚本中进行修改。

Page 93: 第 7 章  创建交互动画

2 、使用“输出”面板 在调试脚本的过程中,通常使用“输

出”面板和 trace 语句完成脚本调试工作。 若影片在编辑环境中,可以选择“控

制”→“测试影片”命令,进入影片测试环境,选择“窗口”→“输出”命令,即可显示“输出”面板,如果影片中的动作脚本存在语法错误,将在“输出”面板中提示脚本出错的位置和原因。

Page 94: 第 7 章  创建交互动画

7.5.1 事件 事件是触发动作的信号。用户单击鼠标、按

下键盘上某个按键都会产生一个事件,这些类型的事件通常称作用户事件。由播放器自动产生的事件称作系统事件。

在动画文件中,为使应用程序能够对事件做出反应,必须使用事件处理函数。

动作脚本提供了几种不同的方法来处理事件,下面重点介绍使用按钮和影片剪辑事件处理函数的方法。

7.5 事件与动作

第 7 章 创建交互动画第 7 章 创建交互动画

Page 95: 第 7 章  创建交互动画

1 、使用按钮事件处理函数

on() 事件处理函数可以直接将事件处理函数附加到按钮实例,并指定触发动作的鼠标事件或按键事件。选中按钮,选择“全局函数”→“影片剪辑控制”→“ On” ,将弹出如下图所示的菜单。

OnOn 命令菜单 命令菜单

Page 96: 第 7 章  创建交互动画

菜单中各个命令的含义如下:press :当鼠标指针移动到按钮上并按下鼠

标按键时,就会触发指定的动作。 release :当单击按钮并释放鼠标按键时,就

会触发指定的动作。 releaseOutside : 当按下按钮后,将鼠标指针移到按钮之外时释放鼠标按键,就会触发指定的动作。

rollOut :鼠标指针滑出按钮区域,就会触发指定的动作。

Page 97: 第 7 章  创建交互动画

rollOver :鼠标指针由按钮外移动到按钮内时,就会触发指定的动作。

dragOut :当鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮区域,就会触发指定的动作。

dragOver :当鼠标指针移动到按钮上并按下鼠标左按钮,然后滑出此按钮范围,再滑回此按钮之上,就会触发指定的动作。 keyPress :按下键盘上指定的键时,就会触发指定的动作。

Page 98: 第 7 章  创建交互动画

2 、使用影片剪辑事件处理函数 使用 onClipEvent() 事件处理函数可直接将

事件处理函数附加到影片剪辑实例中。选中影片实例,在“动作”面板中选择“全局函数”→“影片剪辑控制”→“ onClipEvent”命令,弹出如下图所示的菜单。

onClipEventonClipEvent 命令菜单 命令菜单

Page 99: 第 7 章  创建交互动画

影片剪辑元件实例的事件源含义如下: load  :当影片剪辑实例载入时间轴时产生这

个事件。 unload  :从时间轴上卸载了影片剪辑之后,

就发生该事件。 EnterFrame :一旦影片剪辑的播放指针进入其

时间轴的每一帧,就发生这个事件。 mouseMove  :在场景中移动鼠标时发生这个

事件。 MouseDown :当按下鼠标左键时发生这个事

件。

Page 100: 第 7 章  创建交互动画

mouseUp  :当释放鼠标左键时发生这个事件。

keyDown  :当按下键盘上的某个键时发生这个事件。

KeyUp :当释放键盘上的某个键时发生这个事件。

Data :当影片剪辑实例使用 loadVariables() 或 loadMovie() 动作接收数据时发生这个事件。

Page 101: 第 7 章  创建交互动画

7.5.2 动作 动作是由一条或多条的命令语句组成的程序

代码。动画的交互性是通过对按钮、关键帧或影片剪辑设置一定的动作实现的,分别称为帧动作、按钮动作及影片剪辑动作。

1 、设置帧动作 将动作添加到指定的关键帧上,设置了动

作的帧上将出现一个小写的字母 a ,当动画播放到该帧时会自动执行预设的动作。典型的应用的就是控制动画的播放和结束时间。为便于动作脚本的查看和修改,最好将帧动作放在一个单独的层上。

Page 102: 第 7 章  创建交互动画

2 、设置按钮动作 设置按钮动作,是制作交互动画时最基础

也最实用的功能。按钮动作的触发事件可以是鼠标的不同状态,如:鼠标滑过按钮、按钮被按下或者是按下键盘上的某个键等。每个按钮实例上的动作是独立的,不会相互影响。

设置按钮动作时,必须使用 on() 事件处理函数;用以指定触发动作的鼠标事件或按键事件。

Page 103: 第 7 章  创建交互动画

3 、设置影片剪辑动作 影片剪辑是 Flash 8 中最重要的对

象之一。它拥有自已的时间轴,每个影片剪辑都有自已唯一的名字。为影片剪辑设置动作并指定触发事件后,当事件发生时就会执行设置的动作。

设置影片剪辑动作时,因为要响应不同的触发事件,所以必须使用 onClipEvent() 事件处理函数。

Page 104: 第 7 章  创建交互动画

7.6 动作脚本的提高 7.6.1 建立面向对象的动作脚本 “对象”指的是具有一定功能的程序与数据的

集合,如 ActionScript 中的按钮图符就是对象。讲到对象就必须提到类,因为类是建立对象的模型,对象是类的实例。对象与它的类之间的关系类似于房子与建筑图纸之间的关系。有两种方法创建对象:

使用“ new” 操作符,从预定义对象类或自定义对象类创建对象。

使用对象初始化操作符“ {}” 来创建类形式对象。

第 7 章 创建交互动画第 7 章 创建交互动画

Page 105: 第 7 章  创建交互动画

7.6.2 使用预定义对象1 、使用 Array (数组)对象 数组对象是一种使用频率比较高的内置

对象,常使用 new Array() 直接实例化一个数组对象,所有数组都从 0开始,即数组中的第一个元素为 [0] ,第二个元素为 [1] ,依次类推。

2 、使用 Date (日期)对象 Date 对象从正在播放影片的计算机系统

时钟获取日期和时间信息。为使用 Date 对象,必须使用构造函数 new Date() 创建一个Date 对象实例。

Page 106: 第 7 章  创建交互动画

3 、使用 Color (颜色)对象 在 Flash 8 中,使用颜色对象的方法可

以调整影片剪辑的颜色。 setRGB 方法可把十六进制的 RGB (红、绿、蓝)值赋给对象,而 setTransform 方法则用来设置 RGB的百分比和补偿值以及一种颜色的透明度。

4 、使用 Sound (声音)对象 在 Flash 8 中,使用声音对象可以控制影

片中的声音。在调用 Sound 对象的方法之前,必须使用构造函数 new Sound 创建一个新的 Sound 对象实例。

Page 107: 第 7 章  创建交互动画

5 、使用 Key (键盘)对象 Key 对象是不需要构造函数创建对象实

例即可使用其方法和属性的对象。使用 Key 对象的方法可生成用户能够通过标准键盘控制的界面。 Key 对象的所有属性都是常量,都必须要大写。 Key.getCode() 方法常用在 onClipEvent 事件处理程序中。

Page 108: 第 7 章  创建交互动画

6 、使用 Mouse (鼠标)对象 Mouse 对象在影片中提供对鼠标的控制。

Mouse 对象不需要构造函数创建对象实例即可访问其属性和方法。默认情况下鼠标指针是可见的,使用 Mouse 对象的方法可以实现隐藏和显示影片中的鼠标指针(光标),也可以实现用影片剪辑创建的自定义指针。

它有两种格式:Show 方法: Mouse.Show(); // 显示鼠标指针 .

Hide 方法: Mouse.Hide(); //隐藏鼠标指针 .

Page 109: 第 7 章  创建交互动画

7 、使用 MovieClip (影片剪辑)对象 Flash 影片中的每个影片剪辑均是 Movi

eClip 对象的实例。用户可以使用此对象的方法和属性控制影片剪辑对象实例。 MovieClip 对象的方法提供的功能与定位影片剪辑的动作所提供的功能相同。不需使用构造函数方法即可调用 MovieClip 对象的方法,只需使用以下语法按名称引用影片剪辑实例即可:

my_mc.play();my_mc.gotoAndPlay(3);

Page 110: 第 7 章  创建交互动画

7.6.3 使用自定义对象1 、创建自定义对象 一个对象包含了很多属性,每一个属性都有自已的名称和属性值(属性值可以是 ActionScript支持的任何数据类型),这些属性可以接收值或通过一定的方法改变其值。

利用构造函数创建一个类,可以使用 new 将对象实例化,这有助于重复使用代码,减少文件的数据量。定义一个构造器函数格式:

function functionname ([argument0,argument1,argument2,…,argumentN]) { statement(s);}

Page 111: 第 7 章  创建交互动画

可以使用构造器函数体中的关键字 this来引用该构造器创建的对象。调用构造器函数时, Flash 会将 this 作为隐藏参数传递。例如,创建一个构造器函数 Book ,它具有width 、 height 和 area属性,脚本代码如下:

function Book(width, height) {

this. width= width;

this. height= height;

this.area= this.width* this. height;

}

Page 112: 第 7 章  创建交互动画

定义完构造器函数之后,可以通过关键字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.

Page 113: 第 7 章  创建交互动画

2 、对象属性的继承 每个构造器函数都有一个 _prototype属性,它

是在定义该函数时自动创建的,该属性代表用该函数创建的对象的默认属性值。当使用一个对象去创建另一个对象值的时候,这个对象的所有属性和方法都可以通过 _prototype属性被新的对象继承,继承的关系是根据一定的层次关系处理的。调用一个对象的属性和方法时,系统首先在对象中搜索该对象的属性或方法是否存在,如果不存在,则会自动通过 _prototype属性在所继承的对象中寻找属性或方法是否存在。如果这些属性或方法不属于所继承的对象,则会通过 object_prototype属性再到所继承的对象中寻找。

Page 114: 第 7 章  创建交互动画

3 、创建自定义对象的方法可以按照下列方法创建自定义对象,操作步

骤如下:1 )首先定义一个构造器函数。下面的脚本代

码是用来创建一个构造器函数 circle 。 function circle(radius) {

this. radius. radius;

}

Page 115: 第 7 章  创建交互动画

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 ( );

Page 116: 第 7 章  创建交互动画

Thank you very Thank you very much!much!

本章到此结束。本章到此结束。谢谢您的光临!谢谢您的光临!