ActionScript 3.0从入门到精通(视频实战版)
上QQ阅读APP看书,第一时间看更新

第一篇 ActionScript 3.0编程基础

第1章 ActionScript 3.0概述

ActionScript 3.0是针对Flash Player运行时环境的编程语言,它具有处理各种人机交互、数据交互等功能。本章将粗略地介绍ActionScript语言的发展历史、新增特色、编程环境,并编写第一个ActionScript 3.0程序等内容。

1.1 关于ActionScript 3.0

ActionScript 3.0是随着Adobe Flash CS3和Flex 2.0的推出而同步推出的脚本编程语言。本节将对ActionScript 3.0进行简要的介绍,并通过一些具体的实例图片,展示常见的ActionScript的应用领域。

1.1.1 ActionScript 3.0介绍

ActionScript 3.0与ActionScript以前的版本有本质上的不同。它是一门功能强大、符合业界标准的面向对象的编程语言。它在Flash编程语言中有着里程碑式的作用,是用来开发富Internet应用程序(Rich Internet Applications,RIA)的重要语言。

ActionScript 3.0在用于脚本撰写的国际标准化编程语言ECMAScript的基础之上,对该语言做了进一步的改进,可为开发人员提供用于富Internet应用程序的可靠的编程模型。开发人员可以获得卓越的性能并简化开发过程,便于利用非常复杂的应用程序、大的数据集和面向对象的、可重复使用的基本代码。ActionScript 3.0在Flash Player 10中新的ActionScript虚拟机(AVM2)内执行,可为下一代RIA带来性能突破。

Adobe公司于2007年6月11日推出了Adobe Integrated Runtime(AIR)的Beta版,正式提出了新的富Internet应用程序概念。2008年2月25日,AIR 1.0正式版和Flex 3.0集成发布。AIR允许开发人员使用Flex或HTML/CSS/JavaScript组合来构建桌面应用程序。它是一款连接本地操作系统与在线的网络应用之间的桥梁,它能让平常要在网络上浏览使用的网页程序(如Flash、HTML、JavaScript、AJAX)直接安装在用户的计算机上,可以直接在计算机上执行,不必打开网页浏览器。

无论是IE支持的Flash Player播放器,还是AIR程序,都真正支持跨系统应用,其核心语言都是ActionScrpit 3.0。

1.1.2 ActionScript 3.0能做什么

最初在Flash中引入ActionScript,目的是为了实现对Flash影片的播放控制。而ActionScript发展到今天,其已经广泛地应用到了多个领域,能够实现丰富的应用功能。

ActionScript 3.0最基本的应用与创作工具Adobe Flash CS5结合,创建各种不同的应用特效,实现丰富多彩的动画效果,使Flash创建的动画更加人性化,更具有弹性效果。在这些基础应用当中,应用最为广泛的就是使用ActionScript脚本控制的弹性菜单。下面是一个弹性的效果,如图1.1所示。

图1.1 弹性菜单效果图

随着网络技术的发展和网页制作技术的进步,使用Flash与ActionScript脚本语言创作的网站,动画效果更强,数据交互速度更快、更方便,成为RIA开发技术的典范。下面是一个Flash网站的首页,效果如图1.2所示。

图1.2 Flash网站效果图

网络流媒体技术的广泛应用,使得Flash与ActionScript结合创作的音乐播放器和视频播放器在网络上广泛流行,特别是网络视频网站,已经成为Flash网络应用中的一个热点。图1.3是一个网络视频播放器效果图。

图1.3 网络视频播放器效果图

最近两年,Flash游戏也成为Flash应用的一个重点领域,受到广大游戏玩家的追捧。使用Flash与ActionScript创作的游戏,由于其具有方便、简单易用、绿色且文件小等优势,在网络上广泛流传,也是企业开发的重点。下面是一款Flash赛车游戏的抓图,效果如图1.4所示。

图1.4 赛车游戏效果图

Flash与ActionScript脚本语言结合,广泛用于课件制作领域,不仅包含纯粹的教育领域,其他的企业和政府机构的培训课程,都已经开始使用Flash和ActionScript语言来进行创作和实施教学。下面是一个课件的页面,效果如图1.5所示。

图1.5 课件应用效果图

ActionScript 3.0的应用领域还有很多,特别是在应用面向对象编程的今天,其应用肯定会有一个更广阔的天地。

1.2 ActionScript 3.0的新特色

ActionScript 3.0包括两部分:核心语言和Flash Player API。核心语言用于定义编程语言的基本结构,比如声明变量,创建表达式控制程序结构和数据类型等。Flash Player API由一系列用于实现特定功能的Flash Player类组成。

1.2.1 核心语言的新特色

ActionScript 3.0核心语言与ECMAScript标准兼容,并和新改进的一些功能区域进行结合。下面是ActionScript 3.0的一些新特点。

1. 运行时的异常处理机制

在ActionScript 2.0以及以前的版本中,许多运行时的错误都没有记录,也没有给予反馈调试。这样虽然能够保证Flash Player的顺利运行,程序不被中断,但是会使程序的调试倍加困难。ActionScript 3.0中会出现更多的错误提示。运行时的异常用于常见的错误情形,能够使用户可靠地处理错误的应用程序。当程序运行出现异常时,还可以提供带有源文件和行号的堆栈跟踪,能够帮助用户快速定位错误,进一步改进调试的效率。

2. 运行时类型

在ActionScript 2.0中,严格数据类型的检查只是局限于编译过程。在运行的时候,由于所有值的类型都是动态的,并不含有类型信息。也就是说,类型注释主要是为开发者提供一个帮助。在ActionScript 3.0中,类型信息在运行时依然保留,并且可以用于多种目的。Flash Player 10执行运行时类型检查,增强了系统的类型安全性。类型信息还可以通过以本机形式表示变量,从而减少了内存的使用量,提高了性能。

3. 密封类

ActionScript 3.0中引入了密封类的概念。密封类只能拥有在编译时定义的固定的一组属性和方法,不能再添加其他属性和方法。这样就使编译检查更加严格,增强了程序的可靠性。由于不要求每一个对象实例都有一个内部散列表,从而提高了内存的使用率。当然这样仍可以实现动态类,不过需要使用dynamic关键字实现。默认情况下,ActionScript 3.0的类都是密封类。

4. 闭包方法

ActionScript 3.0中使用闭包方法可以自动记起它的原始对象实例。此功能主要是为了改进ActionScript 2.0中this关键字无法记住自身指向的原始对象而加入的。

5. E4X

ActionScript 3.0实现了对先进的ECMAScript for XML的完全支持。E4X提供了一组操作XML的语言构造,使XML数据的处理更为简单,成倍地降低了代码的数量,简化了XML应用程序的开发,大大提高了开发的效率。

6. 正则表达式

由于ECMAScript第3版语言规范中对正则表达式进行了定义,从而使ActionScript 3.0实现了对正则表达式的支持。使用正则表达式,大大增强了字符串处理功能。

7. 命名空间

ActionScript 3.0中的命名空间是一种创新机制,用以控制声明的可见性。命名空间和用于控制声明的public、private等可见的传统访问说明符类似。其本质是通过自定义路径,能够使用用户所选择的名字。用户也可以声明自己的命名空间,定义出不同的访问控制权限。

8. 新基元类型

ActionScript 2.0中的数值类型只有Number,它是一种双精度浮点数。ActionScript 3.0又增加了int和uint类型。int类型是一个带符号的32位整数,而uint是无符号的整数,可用于储存RGB颜色值和字节计算等。

1.2.2 Flash Player API 新功能

Flash Player API是为增强Flash Player容纳ActionScript语言的能力而引入的一组类和功能。这种功能在ActionScript核心语言和Flash平台之间建立了一座桥梁,大大提高了Flash应用程序的能力,并对核心语言起到了重要的补充作用。下面列出一些Flash Player API功能的新特点。

1. DOM3事件模型

模仿W3C DOM3事件规格建立的DOM3事件模型在ActionScript 3.0中更加清晰、高效。该事件模型提供了生成和处理事件信息的一种标准方法,从而使应用程序内的对象可以相互通信,保持状态并能对更改做出响应。

2. 显示列表API

新的显示列表是ActionScript 3.0中的重大革新。原有的显示结构发生了重大的改变,新的容器类用于显示对象的存储,比Movie Clip更加轻量、有效;新的深度管理体系由Flash Player自动管理深度,并提供了方法用于管理z轴。另外,由于有了显示列表的存在,遍历对象也就更加轻松自如。

此外,文本的改进和对二进制的支持也是新的特色。

1.3 Flash CS5的动作面板介绍

Flash CS5中可以使用动作面板、脚本窗口或者外部编辑器的创作环境中添加ActionScript代码。本节就来介绍一下Flash CS5的动作面板窗口和Flash CS自带的编辑器窗口,并将详细介绍功能按钮的作用。

1.3.1 动作面板概述

如果要在Flash CS5中加入ActionScript代码,可以直接使用动作面板来输入。

要打开动作面板,请执行下面的操作:单击【窗口】|【动作】,或者按【F9】键。

打开后的动作面板如图1.6所示。

图1.6 动作面板

下面对图中各部分的名称及作用加以说明。

A:脚本窗格,用于输入代码的地方。

B:面板菜单,单击后可显示动作面板功能菜单。

C:动作工具箱,可以通过双击或者拖动的方式将其中的ActionScript元素添加到脚本窗格中。

D:脚本导航器,其有两个功能,一是通过单击其中的项目,可以将与该项目相关的代码显示在脚本窗口中;二是通过双击其中的项目,对该项目的代码进行固定操作。

1.3.2 脚本窗口概述

ActionScript 3.0是很好的面向对象编程语言,同样Flash CS5也提供了一个很不错的脚本编辑器,这就是Flash的脚本窗口。使用脚本窗口可以创建或者导入外部的脚本文件,这些文件可以是ActionScript、Flash Communication或Flash JavaScript文件。

要打开脚本窗口,请执行下面的操作:

1) 单击【文件】|【新建】,打开“新建文档”对话框,如图1.7所示。

图1.7 “新建文档”对话框

2) 选择“ActionScript文件”,单击【确定】按钮。打开的脚本窗口如图1.8所示。

图1.8 脚本窗口

这样就可以在脚本窗口中编辑ActionScript代码了。

1.3.3 动作面板和脚本窗口的工具介绍

在动作面板和脚本窗口的上部都有一排功能按钮,利用这些功能按钮可以很方便地进行ActionScript代码的输入和编写,下面对这些按钮进行具体的说明。

:将新项目添加到脚本中按钮。该按钮主要用于显示语言元素,这些元素同时也会显示在“动作”工具箱中。可以利用它来选择要添加到脚本中的项目或者元素名称。

:查找按钮。主要用于查找并替换脚本中的文本。

:插入目标路径按钮(仅限动作面板)。可以帮助为脚本中的某个动作设置绝对或相对目标路径。

:语法检查按钮。用于检查当前脚本中的语法错误。

:自动套用格式按钮。用来调整脚本的格式,以实现正确的编码语法和更好的可读性。

:显示代码提示按钮。在关闭自动代码提示时,可使用此按钮来显示正在执行的代码行的代码提示。

:调试选项按钮(仅限动作面板)。用于设置和删除断点,以便在调试时可以逐行执行脚本中的每一行。

:折叠成对大括号按钮。用于对出现在当前包含插入点的成对大括号或小括号间的代码进行折叠。

:折叠所选按钮。用于折叠当前所选的代码块。

:展开全部按钮。用于展开当前脚本中所有折叠的代码。

:应用块注释按钮。用于将注释标记添加到所选代码块的开头和结尾。

:应用行注释按钮。用于在插入点处或所选多行代码中每一行的开头处添加单行注释标记。

:删除注释按钮。用于从当前行或当前选择内容的所有行中删除注释标记。

:显示/隐藏工具箱按钮。用于显示或隐藏“动作”工具箱。

:脚本助手按钮(仅限动作面板)。用于打开和关闭“脚本助手”模式。

:帮助按钮。用于显示脚本窗口中所选ActionScript元素的参考信息。

:面板菜单(仅限动作面板)。包含适用于动作面板的命令和首选参数。

注意

在脚本窗口中要慎用“自动套用格式”按钮,否则会造成未知的错误。比如下面的代码:

    return Math.floor((n - 1) * Math.random());

说明

在执行“自动套用格式”按钮之后,变为:

    return Math.floor(n - 1 * Math.random());

说明

代码执行的语法和原意完全不同。

1.4 ActionScript 3.0的首选参数设置

无论是在动作面板还是在脚本窗口中编辑ActionScript代码,都可以通过设置首选参数来配置输入的ActionScript代码的格式。

要设置ActionScript 3.0的首选参数,需要先打开首选参数窗口。请执行下面的操作:选择【编辑】|【首选参数】,打开“首选参数”对话框,如图1.9所示。

图1.9 “首选参数”对话框

通过首选参数设置,可以设置如下参数:

❑自动缩进:若勾选了该选项,则在输入左小括号“(”或左大括号“{”之后输入的文本将按照“制表符大小”设置自动缩进。

❑制表符大小:指定新行中将缩进的字符数目。

❑代码提示:若选择此选项,则在动作面板或者脚本窗口中能够启用代码提示,方便代码输入。

❑延迟:指定代码提示出现之前的延迟时间(以秒为单位)。

❑字体:指定用于脚本的字体。

❑使用动态字体映射:选中此选项可确保所选的字体系列呈现每个字符。如果没有,Flash会替换上一个包含必需字符的字体系列。

❑打开/导入:指定打开或导入ActionScript文件时使用的字符编码格式。

❑保存/导出:指定保存或导出ActionScript文件时使用的字符编码。

❑重新加载修改的文件:指定脚本文件被修改、移动或删除时将如何操作。

❑语法颜色:指定在脚本中输入的代码显示的颜色。

❑语言:打开“ActionScript设置”对话框,可以在其中设置ActionScript 2.0或3.0的类路径。

对于初学者来说,编写ActionScript代码时,使用代码提示是一个很好的主意。下面就来介绍几种使用代码提示的方法。

1. 工具提示样式的代码提示

在需要括号的元素(例如方法名称、for、if或do while之类的命令等)后输入一个左括号“(”以显示代码提示,如图1.10所示。

图1.10 代码工具提示样式

这样,可以根据提示输入相应的代码,以提高用户编写脚本的速度。要使代码提示消失,可以输入右括号“)”或者用鼠标左键单击该语句之外的地方。

2. 使用菜单样式的代码提示

通过在变量或者对象名称后输入“.”来显示代码提示,如图1.11所示。

图1.11 代码菜单提示样式

可用向上和向下箭头键选择要使用的属性和方法。要使代码提示消失,可以选择需要的属性,或者用鼠标左键单击语句之外的地方。

1.5 面向对象编程概述

ActionScript 3.0是为面向对象编程而准备的一种脚本语言。本节将简单介绍一下面向对象编程的基本概念。

面向对象编程(Object Oriented Programming,OOP)是指面向对象程序设计,它是一种计算机编程架构。

程序(program)是为实现特定目标或者解决特定问题而用计算机语言编写的命令序列的集合。它可以是一些用高级程序语言开发的可以运行的可执行文件,也可以是一些用应用软件制作的可执行文件,比如Flash编译之后的SWF文件。

编程是指为了实现某种目的或需求,使用各种不同的程序语言进行设计,编写能够实现这些需求的可执行文件。

面向对象编程的基本原则是程序由多个能够起到不同功能的组织单元或者对象组合而成。其要达到的基本目标是:重用性、灵活性和可扩展性。在整体设计的过程中,需要使每一个对象(单元)都能够接收和处理数据信息,并能够发出反馈信息。为了实现这些目标,就需要使用类、对象控制数据和信息,使用继承实现功能的衍生。

抽象意义上的对象是一种将状态和行为结合在一起的软件构造,其目的是用来描述真实世界的一个物理或概念性的对象。实际意义上的对象指一个具体的实体或实例,即实实在在存在着的物体。

在通常情况下,对象使用属性和方法来描述。属性指对象状态所对应的数据,比如人这一对象,它有身高、体重等属性。方法指对象所能发生的行为,比如人有吃饭、穿衣等行为。

另外,需要知道对象在什么时间发生了什么行为,或者对象在什么时间执行了某些操作,还需要了解执行的是什么操作。为了达到这个目的,在编程过程中使用“事件”这一概念来描述对象做了什么,有什么动作,或者接受了什么动作。

类是抽象化的对象。将大量对象共有的属性和方法抽象出来,用一个统一的文件来定义和管理,这就是类。

类是抽象化的概念,比如“自行车”。对象是类的具体化,比如“我的自行车”。

继承是指一个对象直接使用另一对象的属性和方法。比如“汽车”是一个大的对象,它可以分为各种不同的车型,如小汽车、卡车、公共汽车等。它们都具有汽车的共有特征,如都有4个轮子、都能够被驾驶等。这样就可以用“汽车”这一对象来概括它们共有的这些特征,然后各种不同车型的车都可以使用“汽车”对象的属性和方法,这就是继承。习惯上将上一级对象的类称为“父类”,将从父类继承而得到的类称为“子类”。

接口是指实现在计算机不同功能层之间相互通信的实施规则。API(Application Programming Interface)指应用程序编程接口,是实现程序不同功能之间相互通信的接口技术和方法。

1.6 Flash CS5的第一个“Welcome You”

Flash CS5中有两种写入ActionScript 3.0代码的方法:

❑在时间轴的关键帧加入ActionScript代码。

❑在外部写出一个单独的ActionScript类文件,然后绑定或者导入到fla文件中。

ActionScript中的类有3种用法:一是和Flash中的库元件进行绑定;二是和fla文件绑定;三是使用import关键字导入类。

用ActionScript 3.0开发的程序中,推荐文档与代码分离,不推荐把代码写在关键帧上。下面用两种方法来开始第一个“Welcome You”程序。

1.6.1 在关键帧上加入代码

打开Flash CS5,新建一个Flash文件(ActionScript 3.0)。建好后,单击时间轴的第一帧,打开动作面板,输入如下代码:

    trace("Welcome You");

效果如图1.12所示。

图1.12 动作面板编写代码效果

按下【Ctrl+Enter】组合键,测试影片。这时可以看到有一个Flash Player窗口和一个输出面板窗口,面板中显示“Welcome You”,效果如图1.13所示。

图1.13 输出窗口显示效果

第一种Welcome You程序大功告成!

说明

trace()语句的作用是向“输出”面板发送特定信息。比如,测试SWF文件,当单击按钮或播放帧时,可以将结果发送到“输出”面板。trace()语句类似于JavaScript alert语句。

其用法格式为:

    trace(... arguments);

说明

参数为要计算的一个或多个参数或者表达式,多个参数使用逗号隔开。

1.6.2 利用文档类制作第一个“Welcome You”程序

ActionScript 3.0的一个新特色就是文档类,也就是把外部的ActionScript类文件和fla文件进行绑定,编译的时候将SWF文件看做类的一个实例。

下面来具体操作一下:

打开Flash CS5,新建一个Flash文件(ActionScript 3.0),保存为Welcome.fla。

打开脚本窗口,新建一个ActionScript文件,保存为Welcome.as,注意要和Welcome.fla放在同一个目录下。在代码窗口输入如下代码:

    package {
        import flash.display.Sprite
        public class Welcome extends Sprite {
              public function Welcome() {
                    trace("Welcome You");
              }
        }
    }

回到welcome.fla窗口,按下【Ctrl+F3】组合键,打开“属性”面板,在文档类文本框中输入“Welcome”,如图1.14所示。

图1.14 绑定文档类效果图

按下【Ctrl+Enter】组合键,测试影片。这时可以看到有一个Flash Player窗口和一个输出面板窗口,面板中显示“Welcome You”。输出的效果如图1.15所示。

图1.15 输出窗口显示效果

至此,第二种Welcome You程序大功告成!

1.7 练习题

1. 关于AS 3.0下面描述正确的是( )。

A. AS 3.0不能创建动态类,类的属性和方法只能是固定的

B. Flash Player 10中,AS 3.0在新的虚拟机(AVM2)内执行,以前版本的ActionScript在AVM1内执行

C. AS 3.0 this仍然不能准确记录当前引用的原始对象位置

D. 在Flash CS5中,可以将AS 2.0代码写到时间轴上,AS 3.0代码则不可以写到时间轴上

2. Flash CS5打开动作面板的快捷键是( )。

A. F1

B. F6

C. F9

D. F10

3. AS 3.0中增加了int、uint数值类型,简述它们和Number类型的区别。

4. 实践

1)用Flash CS5(或Flash CS4)新建一个AS 3.0 Flash文件,新建文档类Welcome.as,输出“hello world”。

2)用Flash CS5(或Flash CS4)新建一个AS 3.0 Flash文件,在时间轴添加代码,输出“hello world”。

第一种方法是代码和文档分离,推荐的开发方式。

第二种是AS 2.0常用的方式,不再推荐。

5. 简述AS 3.0比AS 2.0有了哪些变化。