云南师范大学计算机科学与信息技术学院教育技术学——杨金平
语言编写程序是相当费劲的,就算写一个简单的两数相加的程序,程序的长度也是相当惊人的。 为了避免每次都为两数相加的操作书写长长的二进制程序,有人书写了一种专门用于两数相加的代码,你可以方便地使用相同的代码实现任意两数的相加操作。接着,一些类似的函数诞生了,用它们可以处理所有的基本任务,如加、减、乘、除、比较、循环等等。从此以后,你可以使用这些事先编写好的函数执行几乎所有的操作了。
现代的计算机语言理解和使用起来较之二进制编码都已经容易了无数倍,其一,现代计算机语言与英语语法很相似,如“go”、“for”、“begin”、“if”以及+、-、=等,它们的含义和用法与现实中都相差不大。
BASIC、Pascal等编程语言,几乎可以像英语句子一样阅读,所以学习和理解起来都非常容易。其他语言,如C、Fortran,它们的功能更强一些,经验丰富的程序员可以用它们完成更复杂的任务。更多的语言居于以上两种语言之间,如C++、Java和JavaScript,它们既有一定的可读性,也有较强的功能。ActionScript与这些语言有更多的相似之处。
Flash遵从ECMA(European Computer Manufacturers Association欧洲计算机工业协会)制定的标准,因此ActionScript与ECMAScript(ECMA开发的一种语言)极其相似。所以与其说ActionScript建立在JavaScript的基础上,不如说ActionScript和JavaScript都建立在共同的基础之上。
Flash具备交互功能,它的早期版本已能够利用简单的脚本实现不太复杂的导航和按钮。同时,Flash还是一种矢量动画工具,它的发展是与对它的应用需求分不开的,比如说网页设计者需要一种工具来制作体积更小的图像,由于矢量图是由线条和填充色构成的,而不是像位图一样由像素构成,所以它能够大大缩减文件大小,正顺应了网页设计者的需求,使许多系统配置低的用户也能够访问和浏览他们的网页。 虽然说Flash是一个图形动画工具,但也不是没有使用程序的需要,比如说设计者需要制作一个按钮,让别的用户能通过单击按钮浏览到别的页面。
Flash早期版本中的脚本非常简单,直到Flash 4,才具有了标准的程序结构,如条件结构、循环结构等。但是Flash脚本仍然需要使用下拉菜单和空白文本框添加,几乎还不能叫做一种编程语言。
真正的ActionScript到了Flash 5才出现,程序员可以直接键入程序并将程序添加给需要作用的元素。Flash MX更大地扩展了ActionScript,现在的ActionScript提供了多达300余种命令、函数、运算符和结构,这才真正成为一种成熟的程序语言。 1.3 初识ActionScript
脚本是由英语单词、数学符号和函数构成的,下面是一个ActionScript的例子: on (press) {
gotoAndPlay (\}
你可以通过其中的关键单词推测这段程序的作用。单词press表示按,即用鼠标在某种对象上面单击,这里的对象就是按钮。第二行中的长单词可以分开读成“go to and play”,可以将其理解为命令Flash到达影片中的一个特定位置并从这一特定位置开始播放影片。
从以上可以看出,ActionScript可以控制Flash影片的播放。在着手学习ActionScript之前,我们将对ActionScript在Flash影片中的功能作更多的了解。
Flash影片可以包含若干场景,每个场景都有时间轴,每条时间轴从第1帧开始。如果不添加ActionScript,Flash影片会自动从场景1的第1帧开始播放,直到场景1的最后一帧,然后接着播放场景2,以此类推。 ActionScript的主要目的就是用来改变这种自动而死板的线性播放行为,一段脚本可以使影片在一个特定的帧上停止,循环播放前面的部分,甚至于让用户控制要播放哪一帧。ActionScript能够使影片完全脱离被动的线性播放模式。
这还不是ActionScript的所有功能,它还可以将Flash影片从简单的动画改变为具有交互能力的电脑程序。下面让我们见识一下ActionScript能实现的一些基本功能。 = 控制播放顺序
9
云南师范大学计算机科学与信息技术学院教育技术学——杨金平
你可以通过选择某个菜单将影片暂停在某个位置,然后由用户来决定下一步干什么,这就避免让影片径直朝前播放。 = 创建复杂动画
直接使用Flash中的绘图工具和基本命令来创建足够复杂的动画是相当困难的,但是脚本可以帮助你创建复杂的动画。例如可以用ActionScript控制一个球在屏幕中无休止的跳动,并且可以使它的动作遵从物理学中的重力定律。如果你不用ActionScript来实现这样的动画,你将需要几千帧来模仿相似的动作,而用ActionScript,你将只需要一帧。 = 响应用户输入
你可以通过影片向用户提出问题并接收答案,然后将答案信息用于影片中或将其传送到服务器。加入了相应ActionScript的Flash影片更适合做网页中的表单。 = 从服务器获取数据
与向服务器传送数据相反,使用ActionScript也可以从服务器中获取数据,你可以获取即时的信息并将它提供给用户。 = 计算
ActionScript也可以对数值进行计算,用它可以模拟出各种复杂的计算器。 = 调整图像
ActionScript可以在影片播放时改变图像的大小、角度、旋转方向以及影片剪辑元件的颜色等。你还可以从屏幕中复制或删除对象。 = 测试环境
你可以用ActionScript测试Flash影片的播放环境,如获取系统时间,获取Flash Player的版本信息等。 = 控制声音
ActionScript可以方便地控制声音的播放,甚至控制声音的声道平衡和音量等。 1.4 ActionScript放在哪里
初学ActionScript的Flash爱好者最想问的问题恐怕是“ActionScript应该放在哪里?”
Flash是一种复杂的多媒体编辑环境,如果你曾经使用过Flash,或者看过Flash MX附带的教程,你就应该知道Flash中的一些基本术语或元素。在Flash的元素中有3个地方可以放置脚本。 1.4.1 时间轴
Flash影片中的每个场景都有时间轴,时间轴上的每个关键帧都可以放置脚本。并且,你还可以在每一个关键帧的不同层上放置不同的脚本。
在主时间轴中放置脚本之前,需要先选择一个关键帧。启动Flash时,时间轴中有一个空白关键帧 当选中一个关键帧后,你就可以打开动作面板,查看里面的脚本或者开始编写你自己的脚本了。 有几种方法可以打开动作面板。你可以选择“窗口”→“动作”命令,或者按快捷键F9。
如果你对Flash复杂的影片浏览器比较熟悉,你也可以在影片浏览器中查看整个Flash影片所用到的脚本。打开影片浏览器的快捷键是Alt+F3。
如图1-2所示即为Flash MX的动作面板。该动作面板被命令为“动作-帧”,这是因为其中的脚本将作用在帧上。如果是新建的一个影片,动作面板将是空的。后面我们将在动作面板中添加各种各样的脚本。第2章我们将看到如何使用动作面板。
时间轴中的脚本将在Flash影片播放到脚本所在的关键帧位置时自动执行。例如,如果你为某一关键帧添加了stop()命令,当影片播放到那一帧位置时就会自动停止。要让影片继续播放,只有在其他的脚本中添加相应的命令。
在时间轴中添加脚本还有一个好处就是方便你在ActionScript中使用函数。函数是可以重复使用的脚本代码,要想使整个影片都可以调用脚本中的函数,就必须将函数放置在主时间轴中。 1.4.2 按钮
Flash中的元素又称作元件(symbol)。元件主要有3种:图形(graphic)、影片剪辑(movie clip)和
10
云南师范大学计算机科学与信息技术学院教育技术学——杨金平
按钮(button)。图形元件不能承载脚本,它们只能是简单的静态或动态图像。影片剪辑与图形元件类似,但是它可以承载脚本。
第3种元件就是按钮,按钮可以承载脚本。事实上,如果没有脚本,按钮几乎不会发挥什么作用。 要为按钮添加脚本,首先要在舞台中选中按钮,然后选择“窗口”→“动作”命令或按快捷键F9打开动作面板。
与帧动作面板相对应,选中按钮时动作面板的标题是“动作-按钮”。
你可能会认为,为按钮添加的脚本应该是在单击按钮时执行。其实,也可以为其他鼠标动作添加相应的脚本,如鼠标进入和移出按钮区域。按钮也可以响应按键动作,这使得我们可以方便地为按钮设置快捷键。 1.4.3 影片剪辑
影片剪辑不同于图形元件,可以为影片剪辑命名,为影片剪辑添加脚本。为影片剪辑添加脚本的方法与按钮类似。
为影片剪辑添加的脚本可以用来控制影片剪辑自身或控制时间轴中的其他影片剪辑。使用脚本可以判断影片剪辑出现在屏幕中的什么位置,你也可以用脚本来控制影片剪辑的重复播放等,进而控制整个动画。 除了可以为影片剪辑添加脚本,你也可以在影片剪辑内部添加脚本。影片剪辑其实也是一个单独的Flash影片,在影片剪辑中有一条单独的时间轴,你可以像在主时间轴中添加脚本一样在影片剪辑内部的时间轴中添加帧动作脚本。同样地,你也可以将按钮放置到影片剪辑内部并为按钮添加脚本。也就是说主时间轴中的影片剪辑里面有子影片剪辑,子影片剪辑里面又有按钮,按钮中也可以有影片剪辑,如果需要,你都可以为它们添加脚本。
1.5 练习:你的第一段ActionScript
下面来编写你的第一段ActionScript,让你对ActionScript有更深的了解。操作步骤如下: (1)创建一个新的Flash文档。
(2)选中时间轴中的第1帧,按F7键两次插入两个空白关键帧,这时时间轴中应有3个空白关键帧。 (3)在每一帧中绘制不同的图形。
(4)选择“控制”→“测试影片”命令或按Ctrl+Enter键测试影片,你会看到影片在这3个帧之间循环播放。
(5)回到主时间轴,选中第2个关键帧,按F9键打开动作面板。
(6)动作面板左边显示了可扩展的ActionScript关键字目录。在“动作”/“影片控制”目录下面找到关键字stop并双击,脚本窗口将添加如下所示的一行语句: stop();
(7)关闭动作面板,按Ctrl+Enter键测试影片,播放第1、2帧后影片会停止,你将看不到第3帧。 ActionScript发挥了作用,它成功地阻止了影片无休止地循环播放这3帧。
第2章 Flash MX的动作面板
动作面板是Flash MX面板系统的一部分,ActionScript程序员经常会用到它。为了成长为一名娴熟的Flash编程高手,你有必要对Flash的动作面板和在线帮助系统相当的熟悉。
动作面板的标准模式允许你从脚本目录中选择关键字并设置相应的选项,而专家模式为程序员提供了直接输入代码的自由。 2.1 了解动作面板
Flash MX的面板系统向你提供了查看和设置Flash中各种元素信息和属性的捷径。第一次启动Flash MX的时候,系统将会询问你要使用Flash做哪些方面的工作,然后为你设置默认的面板界面。你可以选择“窗
11
云南师范大学计算机科学与信息技术学院教育技术学——杨金平
口”→“面板设置”命令在不同的面板界面之间切换。与此同时,也决定了动作面板的大小,但是你可以将它改变成任何适合你需要的大小。
你可以通过键盘上的F9键随意显示或隐藏动作面板。显示动作面板后,你可以单击它的标题栏将它展开或折叠起来。你还可以拖动动作面板的左上角将它从Flash的工作界面中分离出来。
动作面板有两种不同的工作模式。默认的模式是标准模式。在标准模式下,你必须从窗口左边的菜单中选择需要的关键字,而不能直接使用键盘输入脚本,因此可以有效避免即使是很细小的错误。 2.2 动作面板的标准模式
面板上部的下拉菜单显示了你当前所编辑的脚本的准确位置。图2-1中显示的是“帧动作脚本1 图层名称 图层1”,也就是说当前所编辑的脚本是作用于图层1的第1帧的。
面板左边显示了ActionScript命令的分类目录,单击展开一个目录,你将看到它里面的子目录或命令。 面板的右边是一个空白文本区,它将显示你所选择的命令和函数。图2-2显示了你从左边的目录里面选择插入“动作”→“影片控制”中的goto命令后的动作面板。goto命令是通过双击鼠标添加到脚本中的。 面板右上部显示了goto命令的简单定义,下面显示了与goto命令相关的各种选项,包括“场景”、“类型”和“帧”等,就像是所选命令的参数设置区。参数设置区的状态会依据所选择ActionScript命令的不同而发生变化。
第一个需要设置的选项是选择gotoAndPlay命令还是选择gotoAndStop命令。图2-2中选中的是“转到并播放”单选项,也就是gotoAndPlay。这两种命令是相似的,都是跳转到特定的帧,但是gotoAndPlay命令使影片从特定帧开始播放,gotoAndStop命令使影片在特定帧上停止。
这个命令还需要附加一些信息才能正常工作。如,你想要使影片跳转到哪一帧,这一帧位于哪个场景,图2-2指定的是当前场景。在“类型”下拉菜单中可以选择指定特定帧的方式,你可以使用帧号、帧标签和表达式中的一种。图2-2选中的是帧号类型,这就要求你精确地指定帧的编号,如1。
在以上内容的下面显示了 和 两个按钮。它们使你可以快速地在脚本中插入和删除命令。但是这种方法很少使用,你可以通过左边的分类目录添加脚本,使用键盘上的Delete或Back Space键删除不需要的命令。 和 按钮的右边还有几个功能不一的按钮。 按钮使你可以从脚本中查找文本, 按钮使你可以替换文本,使用 按钮可以插入目标路径, 按钮可以为你调试脚本设置断点, 和 按钮使你可以选择脚本的前一行或后一行。
在动作面板的底部你可以看到这样的一行:“第1行:gotoAndPlay(1);”,这是动作面板的状态行,它显示了当前选中的行号和该行的内容。 2.3 分类目录
动作面板左边的目录将ActionScript的关键字有组织地分成几组,以使你更容易查找到需要的关键字的位置。以后我们会对每个组中的命令和符号作详细的讲解,下面先对其进行一下简要的介绍。 = 动作
在动作类中包含了最简单的ActionScript命令。动作类提供了测试条件、循环、创建函数、复制和创建影片剪辑以及从服务器中获取数据等功能的命令。动作类中的命令是ActionScript最重要的组成部分。动作类又分为影片控制、浏览器/网络、影片剪辑控制、变量、条件/循环、打印、用户定义的函数以及其他动作等子类。 = 运算符
它包括了各种数学和比较运算符,如+号,用于两数相加;==号,用于判断两数是否相等。运算符类下面又分为按位、比较、赋值、逻辑、算术和其他运算符等子类。 = 函数
使用函数可以转换数据或获取需要的信息,如获取Flash的版本信息。你可以使用函数将字符串123转换成数字123。你还可以自定义需要重复使用的函数。在函数类下面主要有两个子类:数学函数和转换函数。 = 常量
常量类中包含了一些具有特定值的特殊关键字,如true、false、null和newline等。
12