[ Fs422.CoM]        热烈庆祝风沙电脑技术网站今天开张,做了一年的垃圾站,决定做一个对自己有帮助的站,或许也能帮到你,谢谢你的光临!!!如果有什么问题,可以点此给我留言------风少 2008.7.31
返回首页
当前位置: 首页 > Flash > Flash编程语法 > 浏览正文

第2章 ActionScript 3.0 简介

时间:2009年05月22日来源:网络 作者:hn1688 点击:
本章概述最新且最具创新性的 ActionScript 版本,即 Adobe® ActionScript® 3.0。 关于 ActionScript ActionScript 是 Adobe® Flash® Player 和 Adobe® AIR™ 运行时环境的编程语言。它在 Flash、Flex 和 AIR 内容和应用程序 中实现交互性、数据处理以及其它许多功能。
 

本章概述最新且最具创新性的 ActionScript 版本,即 Adobe® ActionScript® 3.0。
关于 ActionScript
ActionScript 是 Adobe® Flash® Player 和 Adobe® AIR™ 运行时环境的编程语言。它在 Flash、Flex 和 AIR 内容和应用程序
中实现交互性、数据处理以及其它许多功能。
ActionScript 是由 Flash Player 和 AIR 中的 ActionScript 虚拟机 (AVM) 执行的。ActionScript 代码通常由编译器(如
Adobe® Flash® CS4 Professional 或 Adobe® Flex™ Builder™ 的内置编译器或 Adobe® Flex™ SDK 中提供的编辑器)编译为“
字节代码格式” (一种由计算机编写并且计算机能够理解的编程语言)。字节码嵌入在 SWF 文件中, SWF 文件由 Flash
Player 和 AIR 执行。
ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模型会感到似曾相识。ActionScript
3.0 相对于早期 ActionScript 版本改进的一些重要功能包括:
• 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的字节代码指令集,可使性能显著提高
• 一个更为先进的编译器代码库,可执行比早期编译器版本更深入的优化
• 一个扩展并改进的应用程序编程接口 (API),拥有对对象的低级控制和真正意义上的面向对象的模型
• 一个基于 ECMAScript for XML (E4X) 规范(ECMA-357 第 2 版)的 XML API。E4X 是 ECMAScript 的一种语言
扩展,它将 XML 添加为语言的本机数据类型。
• 一个基于文档对象模型 (DOM) 第 3 级事件规范的事件模型
ActionScript 3.0 的优点
ActionScript 3.0 的脚本编写功能超越了 ActionScript 的早期版本。它旨在方便创建拥有大型数据集和面向对象的可重用代
码库的高度复杂应用程序。虽然 ActionScript 3.0 对于在 Adobe Flash Player 中运行的内容并不是必需的,但它使用新型的虚
拟机 AVM2 实现了性能的改善。ActionScript 3.0 代码的执行速度可以比旧式 ActionScript 代码快 10 倍。
旧版本的 ActionScript 虚拟机 AVM1 执行 ActionScript 1.0 和 ActionScript 2.0 代码。为了向后兼容现有内容和旧内容,
Flash Player 9 和 10 支持 AVM1。有关详细信息,请参阅第6 页的“ 与早期版本的兼容性”。
ActionScript 3.0 中的新增功能
虽然 ActionScript 3.0 包含 ActionScript 编程人员所熟悉的许多类和功能,但 ActionScript 3.0 在架构和概念上是区别于早
期的 ActionScript 版本的。ActionScript 3.0 中的改进部分包括新增的核心语言功能,以及能够更好地控制低级对象的改进
Flash Player API。
注: Adobe® AIR™ 应用程序还可以使用 Flash Player API。
ACTIONSCRIPT 3.0 编程5
ActionScript 3.0 简介
核心语言功能
核心语言定义编程语言的基本构造块,例如语句、表达式、条件、循环和类型。ActionScript 3.0 包含许多加速开发过程的新
功能。
运行时异常
ActionScript 3.0 报告的错误情形比早期的 ActionScript 版本多。运行时异常用于常见的错误情形,可改善调试体验并使您
能够开发可以可靠地处理错误的应用程序。运行时错误可提供带有源文件和行号信息注释的堆栈跟踪,以帮助您快速定位错
误。
运行时类型
在 ActionScript 2.0 中,类型注释主要是为开发人员提供帮助;在运行时,所有值的类型都是动态指定的。在 ActionScript
3.0 中,类型信息在运行时保留,并可用于多种目的。Flash Player 和 Adobe AIR 执行运行时类型检查,从而改善了系统的类
型安全性。类型信息还可用于以本机形式表示变量,从而提高了性能并减少了内存使用量。
密封类
ActionScript 3.0 引入了密封类的概念。密封类只能拥有在编译时定义的固定的一组属性和方法;不能添加其它属性和方法。
这使得编译时的检查更为严格,从而导致程序更可靠。由于不要求每个对象实例都有一个内部哈希表,因此还提高了内存的使
用率。还可以通过使用 dynamic 关键字来实现动态类。默认情况下, ActionScript 3.0 中的所有类都是密封的,但可以使用
dynamic 关键字将其声明为动态类。
闭包方法
ActionScript 3.0 使闭包方法可以自动记起它的原始对象实例。此功能对于事件处理非常有用。在 ActionScript 2.0 中,闭包
方法无法记起它是从哪个对象实例提取的,所以在调用闭包方法时将导致意外的行为。mx.utils.Delegate 类是一种常用的解
决方法,但已不再需要。
ECMAScript for XML (E4X)
ActionScript 3.0 实现了 ECMAScript for XML (E4X),后者最近被标准化为 ECMA-357。E4X 提供一组用于操作 XML
的自然流畅的语言构造。与传统的 XML 分析 API 不同,使用 E4X 的 XML 就像该语言的本机数据类型一样执行。E4X 通过
大大减少所需代码的数量来简化操作 XML 的应用程序的开发。有关 E4X 的 ActionScript 3.0 实现的详细信息,请参阅第188
页的“ 处理 XML”。
若要查看 ECMA 的 E4X 规范,请访问 www.ecma-international.org。
正则表达式
ActionScript 3.0 包括对正则表达式的固有支持,因此您可以快速搜索并操作字符串。由于在 ECMAScript (ECMA-262) 第
3 版语言规范中对正则表达式进行了定义,因此 ActionScript 3.0 实现了对正则表达式的支持。
命名空间
命名空间与用于控制声明(public、private、protected)的可见性的传统访问说明符类似。它们的工作方式与名称由您指定的
自定义访问说明符类似。命名空间使用统一资源标识符 (URI) 以避免冲突,而且在您使用 E4X 时还用于表示 XML 命名空间。
新基元类型
ActionScript 2.0 拥有单一数值类型 Number,它是一种双精度浮点数。ActionScript 3.0 包含 int 和 uint 类型。int 类型是
一个带符号的 32 位整数,它使 ActionScript 代码可充分利用 CPU 的快速处理整数数学运算的能力。int 类型对使用整数的循
环计数器和变量都非常有用。uint 类型是无符号的 32 位整数类型,可用于 RGB 颜色值、字节计数和其它方面。
ACTIONSCRIPT 3.0 编程6
ActionScript 3.0 简介
Flash Player API 功能
ActionScript 3.0 中的 Flash Player API 包含许多用于在低级别控制对象的类。语言的体系结构的设计比早期版本更为直观。
由于需要在这里详细介绍的新类实在太多,因此以下各节将着重介绍一些重要的更改。
注: Adobe® AIR™ 应用程序还可以使用 Flash Player API。
DOM3 事件模型
文档对象模型第 3 级事件模型 (DOM3) 提供了一种生成并处理事件消息的标准方法,以使应用程序中的对象可以进行交互和
通信,同时保持自身的状态并响应更改。通过采用万维网联盟 DOM 第 3 级事件规范,该模型提供了一种比早期的
ActionScript 版本中所用的事件系统更清楚、更有效的机制。
事件和错误事件都位于 flash.events 包中。Flash 组件框架使用的事件模型与 Flash Player API 相同,因此事件系统在整个
Flash 平台中是统一的。
显示列表 API
用于访问 Flash Player 和 Adobe AIR 显示列表(包含应用程序中所有可视元素的树)的 API 由处理可视基元的类组成。
新增的 Sprite 类是一个轻型构造块,它类似于 MovieClip 类,但更适合作为 UI 组件的基类。新增的 Shape 类表示原始的矢
量形状。可以使用 new 运算符很自然地实例化这些类,并可以随时动态地重新指定其父类。
现在,深度管理是自动执行的并且已内置于 Flash Player 和 Adobe AIR 中,因此不需要指定深度编号。提供了用于指定和管
理对象的 z 顺序的新方法。
处理动态数据和内容
ActionScript 3.0 包含用于加载和处理 应用程序中的资源和数据的机制,这些机制在 API 中是直观的并且是一致的。新增的
Loader 类提供了一种加载 SWF 文件和图像资源的单一机制,并提供了一种访问已加载内容的详细信息的方法。URLLoader
类提供了一种单独的机制,用于在数据驱动的应用程序中加载文本和二进制数据。Socket 类提供了一种以任意格式从/ 向服务
器套接字中读取/ 写入二进制数据的方式。
低级数据访问
各种 API 提供了对数据的低级访问,而这种访问以前在 ActionScript 中是不可能的。对于正在下载的数据而言,可使用
URLStream 类(由 URLLoader 实现)在下载数据的同时访问原始二进制数据。使用 ByteArray 类可优化二进制数据的读
取、写入以及处理。使用新增的 Sound API,可以通过 SoundChannel 类和 SoundMixer 类对声音进行精细控制。新增的处
理安全性的 API 可提供有关 SWF 文件或加载内容的安全权限的信息,从而使您能够更好地处理安全错误。
处理文本
ActionScript 3.0 包含一个用于所有与文本相关的 API 的 flash.text 包。TextLineMetrics 类为文本字段中的一行文本提供精
确度量;该类取代了 ActionScript 2.0 中的 TextFormat.getTextExtent() 方法。TextField 类包含许多有趣的新低级方法,这些
方法可以提供有关文本字段中的一行文本或单个字符的特定信息。这些方法包括 getCharBoundaries() (返回一个表示字符边框
的矩形)、getCharIndexAtPoint() (返回指定点处字符的索引)以及 getFirstCharInParagraph() (返回段落中第一个字符的索
引)。行级方法包括 getLineLength() (返回指定文本行中的字符数)和 getLineText() (返回指定行的文本)。新增的 Font 类
提供了一种管理 SWF 文件中的嵌入字体的方法。
与早期版本的兼容性
和以往一样,Flash Player 提供针对以前发布的内容的完全向后兼容性。可在早期版本的 Flash Player 中运行的任何内容都可
在 Flash Player 9 及更高版本中运行。然而,在 Flash Player 9 中引入 ActionScript 3.0 后,的确对在 Flash Player 9 或更高
版本中运行的旧内容和新内容之间的互操作性提出了一些挑战。兼容性问题包括以下几个方面:
• 单个 SWF 文件无法将 ActionScript 1.0 或 2.0 代码和 ActionScript 3.0 代码组合在一起。
ACTIONSCRIPT 3.0 编程7
ActionScript 3.0 简介
• ActionScript 3.0 代码可以加载以 ActionScript 1.0 或 2.0 编写的 SWF 文件,但无法访问 SWF 文件的变量和函数。
• 以 ActionScript 1.0 或 2.0 编写的 SWF 文件无法加载以 ActionScript 3.0 编写的 SWF 文件。这意味着,在 Flash 8 或
Flex Builder 1.5 或更早版本中创作的 SWF 文件无法加载 ActionScript 3.0 SWF 文件。
此规则的唯一例外情况是,只要 ActionScript 2.0 SWF 文件以前没有向它的任何级别加载任何内容, ActionScript 2.0
SWF 文件就可以用 ActionScript 3.0 SWF 文件来替换它自身。ActionScript 2.0 SWF 文件可通过调用 loadMovieNum()
并将值 0 传递给 level 参数来实现此目的。
• 通常,以 ActionScript 1.0 或 2.0 编写的 SWF 文件必须进行迁移才能与以 ActionScript 3.0 编写的 SWF 文件一起使用。
例如,假定使用 ActionScript 2.0 创建了一个媒体播放器。该媒体播放器加载同样是使用 ActionScript 2.0 创建的各种内
容。您不能在该媒体播放器中加载以 ActionScript 3.0 创建的新内容。您必须将视频播放器迁移到 ActionScript 3.0。
但是,如果您在 ActionScript 3.0 中创建一个媒体播放器,则该媒体播放器可以执行 ActionScript 2.0 内容的简单加载。
下面这些表总结了早期 Flash Player 版本在加载新内容和执行代码方面的局限性,以及在不同的 ActionScript 版本中编写的
SWF 文件之间跨脚本编写的局限性。

在下表中, “ 支持的功能” 指在 Flash Player 9 或更高版本中运行的内容。运行在 Flash Player 8 或更早版本中的内容只能在
ActionScript 1.0 和 2.0 中加载、显示、执行以及跨脚本编写。

顶一下
()
%
踩一下
()
%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
推荐内容
  • 函数作用域

    函数的范围不但决定了可以在程序中的什么位置调用函数,而且还决定了函数可以访问哪些定义。适用于变量标识

  • 函数作为对象

    作为参数传递给另一个函数的函数是按引用(而不是按值)传递的。在将某个函数作为参数传递时,只能使用标识

  • 函数参数

    ActionScript 3.0 为函数参数提供了一些功能,这些功能对于那些刚接触 ActionSc

  • 函数的基本概念

    可通过使用后跟小括号运算符 (()) 的函数标识符来调用函数。要发送给函数的任何函数参数都括在小括号

  • 循环

    循环语句允许您使用一系列值或变量来反复执行一个特定的代码块。Adobe 建议您始终用大括号 ({})

  • 条件语句

    使用 if..else 条件语句可以测试一个条件,如果该条件存在,则执行一个代码块,如果该条件不存在

  • 运算符

    运算符是一种特殊的函数,它们具有一个或多个操作数并返回相应的值。操作数 是运算符用作输入的值(通常为

  • FlashAction常用编程元素

    除了声明变量、创建对象实例以及使用属性和方法来处理对象之外,还可以使用其它几个构造块来创建 Acti

  • ActionScript 创建对象实例

    当然,在 ActionScript 中使用对象之前,该对象首先必须存在。创建对象的步骤之一是声明变量

  • FlashAction事件

    我们已经介绍了计算机程序就是计算机分步执行的一系列指令。一些简单的计算机程序仅包括计算机执行的几个步