第1章 Actionscript编程
1.1 Actionscript 简介
1.1.1 Actionscript的历史
从Flash 3开始,Actionscript 就开始出现,当时的Actionscript还非常简陋,功能也仅仅局限于控制动画的播放等动作。
等到Flash 4的推出,Actionscript的功能被进一步完善。基本实现了相应各种事件、控制动画行为、和后台交换数据的功能。但是其编程风格仍停留在面向过程的阶段,尽管也有对象的概念,但是非常模糊。
在Flash 5中,Actionscript 出现了翻天覆地的变化,基本语法都经过了改写,有点和Javascript类似,风格也从面向过程转变到了面向对象,提供了自定义的函数以及新增了强大的数学函数、颜色、声音以及XML等对象的支持。使得编程更加得心应手,能够做出更多酷炫的效果,和用户的交互也得到了进一步的提高。
Flash MX推出之后,它的Actionscript以Flash 5的Actionscript为基础,整个语法体系以及编程风格、界面都没有做很大的改动,只是在某些函数、对象的实现上做了扩充,新增了一些方法,提供了更为强大的对象支持。
1.1.2 Flash MX Actionscript 的特点
Flash MX Actionscript 具有以下特点:
(1)Actionscript能够控制Flash动画的播放行为和对象的属性。根据用户的动作来做出响应,并在动画中体现出来。根据载体的不同,Flash Actionscript可以分为两类。一类是放在Frame帧中的Actionscript,主要是做一些计算以及控制动画的播放行为;另一类是放在Button按钮或Movie Clip中的Actionscript,其主要功能是响应用户的事件,当然在响应用户事件后也会进行一些计算或是控制动画的播放。Actionscript更能控制动画中的每一个对象的各种属性的变化,例如长宽、旋转角度、颜色、大小等。
(2)Flash MX Actionscript 是一种面向对象的编程语言,它的风格和Javascript语言相类似。程序由多行语句构成,每行语句又都是由一些指令、变量、运算符以及结尾的分号组成。它拥有循环、判断、对象事件等高级语言的特性。
(3)Flash MX Actionscript可以使用自定义函数。如果有一个功能要经常使用,则可以把它写成自定义函数,在用到的时候调用它。从Flash 5开始,Actionscript就支持自定义函数,而不用像Flash 4那样,把程序写在一个空白帧中,然后用Call语句去调用了。
(4)支持XML和XMLSocket。除了通过getURL()和loadVariablesNum等几种由Flash 4提供的方法和后台程序实现交互外,Actionscript更提供了XML和XMLSocket对象来和后台程序进行交互。任何基于XML标准开发的程序都能和Flash相结合,通过XML对象,Flash可以发送或获取XML资料并对XML资料进行分析,借此达到交换数据的目的。Flash MX对XML的支持在Flash 5的基础上又做了进一步的扩充。
1.1.3 Flash MX Actionscript编程元素
在这一小节中要介绍Actionscript中的一些基本编程元素,了解了这些才能学好Actionscript。
(1)对象。对象是一个非常重要的概念。从Flash 5开始,Actionscript就是面向对象的程序语言了,所以,对象对于Actionscript来说,是最为重要的概念,一切都基于对象,一切都离不开对象。在Actionscript中,对象分为两类,一类是用户自己制作的动画元件(Symbol)实例化后而形成的实体对象(Instance Object),声明这类对象后,可以在Actionscript堆砌的属性和动作行为进行控制;另一类是Flash MX自己定义的抽象对象(Abstract Object),例如Math, Date等,这类对象主要用于计算。
(2)点运算符。通过点运算符,可以访问一个对象的属性(Property)或是方法(Method)。例如,一个对象名叫myObject,它有一个myProperty属性和myMethod()方法,可以通过myObject.myProperty和myObject.myMethod()来分别访问它们。
(3)数据类型以及变量。在Flash MX Actionscript中,提供了丰富的数据类型,从整数、字符、布尔值到各种对象甚至MovieClip都是不同的数据类型。在变量方面,Actionscript允许声明全局变量和局部变量。所谓全局变量,也就是声明一次,在整个动画的Actionscript程序都可以使用的变量;所谓局部变量,就是在函数中声明,只能在函数中被使用的局部性的变量。
(4)事件响应。在Flash动画中,动画的交互性就是通过对用户动作的响应来完成的。在Actionscript中,用户的事件有鼠标事件、键盘事件等,诸如鼠标的移动、按钮的按下和松开、拖动以及键盘上的按键被按下等都属于用户事件的范畴。Actionscript可以通过On()方法来进行响应。
(5)语句和运算符。Flash MX Actionscript的语法风格和Javascript的非常类似,同样有判断、循环等控制流程的语句,同时还提供了丰富的运算符号。当然多条语句组成的一个常用的功能可以被封装成一个自定义函数。这些都使得Actionscript更易于使用。
熟练地使用好这些编程元素,就可以编写出强大的Actionscript脚本,使Flash动画拥有良好的交互性。
1.1.4 如何编辑Actionscript脚本
在Flash中要使用Actionscript有两种方式,一种是直接在Flash中写入Actionscript程序段,另一种是在Flash中包含引入*.as文件(脚本文件)。
要在Flash中写入Actionscript程序,就要在Actions面板(Action Panel)中进行编辑。前面说过,Flash中的Actionscript按载体的不同可以分为两大类,一类在帧(Frame)上,另一类是在按钮(Button Symbol)中。所以,在编辑这两类不同的Actionscript脚本时,打开Actions面板方法也略有不同。
编辑加载于帧(Frame)中的Actionscript时,在Timeline中要加载的那一帧上单击鼠标右键,在弹出的菜单(如图1-1所示)上选择Actions命令,就会弹出Actionscript的编辑面板。
如果要编辑按钮的Actionscript,则只要在按钮上单击右键,如图1-2所示,同样选择Actions,就会弹出编辑该按钮的Actionscript的Actions 面板。
图1-1 图1-2
下面就来看看如何使用Actions面板来编辑Actionscript代码。
图1-3是Actions面板。可以在图中看到,整个面板被分成左右两大部分。在面板的最上方,是一个下拉菜单,在这里,可以选择要编辑的Actionscript代码是属于哪一个物体的,例如,哪一帧或哪一个按钮。在图1-3的例子中,将要编辑的Actionscript是属于Symbol 1这个按钮的。下拉菜单的下面,就是分为左右两大部分的脚本编辑窗口。左面是Actionscript语句选择区,右面是Actionscript代码编辑区。可以看到,在左面的语句选择区中,各种Actionscript中的语句、运算符、对象等都被分门别类地以树状的格式排好,这样,在编辑Actionscript代码的时候,用户就能根据需要很快找到合适的语句或对象。在使用的时候,可能因为编辑区的代码行较长,需要频繁横向翻动才能够显示全部的代码,这时候,可以用语句选择区右侧的 按钮来控制显示或隐藏选择区,来扩大编辑区的显示范围。
图1-3
在右侧的编辑区下方是一个文本框,这是编辑Actionscript的主要场所。除了这个文本框,编辑区里还有许多按钮。在按钮之上的一块灰色区域是参数设置区,选中一行代码后,可以在这里设定一些Actionscript函数的参数。下面将一一介绍代码编辑区内的各按钮的功能:
Ö 使Actions面板总在屏幕上显示(再按一次取消);
Ö 打开Actionscript的语法参考手册;
Ö 添加一条Actionscript语句;
Ö 删除一条Actionscript语句;
Ö 在编辑文本框内查找指定字符串;
Ö 在编辑文本框中查找并替换指定字符串;
Ö 插入一个目标路径(关于Actionscript的路径将在以后说明);
Ö 设置/删除断点,在调试Actionscript代码时非常有用,程序执行到断点处将暂停执行,这时就可以查看程序运行的中间结果,有助于排错;
Ö 切换专家模式和普通模式,以及标注行号功能。在普通模式下,每一句Actionscript语句都是从左侧的语句选择区所选得的,适合于对Actionscript非常熟悉的用户使用。在专家模式下,Actionscript编辑框内可以自由输入、自由书写Actionscript代码,这时,可以不通过左侧的语句选择区而直接输入Actionscript代码,以提高编写代码的速度,适合精通Actionscript的用户使用;
Ö 将当前Actionscript语句下移一行;
Ö 将当前Actionscript语句上移一行。
在了解了这些按钮的功用之后,可以发现,Actionscript虽然只是Flash内部使用的脚本语言,但是从编辑到调试,功能十分完善,而且编辑界面十分友好,帮助也十分齐全。