论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

ActionScript 3.0 闪亮登场!

文章类别:Flash | 发表日期:2008-9-21 20:13:16

  

ActionScript 3.0 闪亮登场!

用下一代 Flash Player Runtime 和 Mozilla 的 Tamarin 开放源码项目编写 Adobe 电影和应用程序



级别: 中级

Anitha Ramaswamy (aramaswa@in.ibm.com), 系统软件工程师, IBM India

2007 年 4 月 24 日

ActionScript 3.0 是一种强大的面向对象编程语言,它标志着 Flash Player Runtime 演化过程中的一个重要阶段。设计 ActionScript 3.0 的意图是创建一种适合快速地构建效果丰富的互联网应用程序的语言,这种应用程序已经成为 Web 体验的重要部分。

历史

ActionScript 是一种基于 ECMAScript 的编程语言,用来编写 Adobe Flash 电影和应用程序。ActionScript 1.0 最初随 Flash 5 一起发布,这是第一个完全可编程的版本。Flash 6 增加了几个内置函数,答应通过程序更好地控制动画元素。在 Flash 7 中引入了 ActionScript 2.0,这是一种强类型的语言,支持基于类的编程特性,比如继续、接口和严格的数据类型。Flash 8 进一步扩展了 ActionScript 2,添加了新的类库以及用于在运行时控制位图数据和文件上传的 API。Flash Player 中内置的 ActionScript Virtual Machine(AVM1)执行 ActionScript。通过使用新的虚拟机 ActionScript Virtual Machine(AVM2),Flash 9(附带 ActionScript 3)大大提高了性能。






简介

ActionScript 的老版本(ActionScript 1.0 和 2.0)提供了创建效果丰富的 Web 应用程序所需的功能和灵活性。ActionScript 3 现在为基于 Web 的应用程序提供了更多的可能性。它进一步增强了这种语言,提供了出色的性能,简化了开发的过程,因此更适合高度复杂的 Web 应用程序和大数据集。ActionScript 3 可以为以 Flash Player 为目标的内容和应用程序提供高性能和开发效率。

ActionScript 3 符合 ECMAScript Language Specification 第三版。它还包含基于 ECMAScript Edition 4 的功能,比如类、包和名称空间;可选的静态类型;生成器和迭代器;以及非结构化赋值(destructuring assignments)。随着 Web 应用程序项目需求的增长,也要求 ActionScript 引擎有重大的突破。ActionScript 3 引入了一个新的高度优化的 ActionScript Virtual Machine(AVM2),与 AVM1 相比,AVM2 的性能有了显著的提高。这使 ActionScript 3 代码的执行速度几乎比以前的 ActionScript 代码快了 10 倍。Flash Player 9 中包含 AVM2(ActionScript 3.0 的脚本语言引擎),设计它的目的是提供互联网应用程序开发人员所需的性能和特性。为了向后兼容现有的内容,Flash Player 将继续支持 AVM1。






能够利用 ActionScript 3 的产品

有许多产品都生成以 Flash Player Runtime 为目标的内容和应用程序,包括 YouTube、Flickr、SWiSH 和 ScreenTime。这些产品能够利用 ActionScript 在自己的输出中添加交互和行为。在 Adobe 产品系列中,专业设计人员可以在几种工具和服务器中使用 ActionScript,比如 Flash、Flex 和 Flash Media Server,从而为 Flash Player Runtime 创建内容和应用程序。Flex 产品系列(包括基于 Eclipse 的新的 Flex Builder 2 IDE)是第一个能够使用 ActionScript 3.0 的新功能的产品系列。






概述

从 ActionScript 3 的一般特性开始,我将讨论一下目标、语言特性和 Flash Player API 特性。还要讨论 ActionScript 3 中的新特性和不太为人所知的特性。在 2006 年 11 月 7 日,在旧金山召开的 WEB 2.0 会议上,Adobe Systems 公布将 ActionScript Virtual Machine 的源代码捐献给 Mozilla Foundation。Mozilla 启动了一个新的开放源码项目 Tamarin,其目的是促进这种创建 Web 应用程序的标准化方法的开发。

ActionScript 3 有两类特性:语言特性和 Flash Player API 特性。语言特性基本上是在 ActionScript 2 之上构建的,但是还有一些性能和功能方面的改进,包括:

  • 许多运行时异常,用来改进常见的错误处理和调试。这些运行时异常会显示堆栈跟踪,可以帮助开发人员轻松地找到错误的根源。以前的 ActionScript 版本会静静地掩盖错误,以避免在 Flash 中出现错误消息对话框。这在开发期间会造成困难,因为开发人员不了解可能出现的错误,就无法开发出好产品。
  • 在运行时存储类型细节,用来进行检查并保护系统,因此 ActionScript 3 是强类型的。这还有助于减少内存使用量,因为类型信息以本机机器表示法表示变量。
  • ActionScript 3 完全符合 ECMAScript 第四版规范,这可以简化 XML 解析。

ActionScript 3 的 Flash Player API 特性包括:

  • DOM3 事件模型提供了生成和处理事件消息的标准方法,这有助于在对象之间进行更好的通信和交互。
  • 新的 Loader 类提供了装载 Shockwave Flash 和图像的单一机制,并提供访问关于被装载内容的具体信息的方法。URLLoader 类提供了在数据驱动应用程序中装载文本和二进制数据的单独机制。
  • Socket 类提供了以任何格式对服务器套接字读写二进制数据的方法。
  • ActionScript 3.0 包含一个 flash.text 包,它提供与文本相关的所有 API。

下面是其他一些新功能。

Loader.loadBytes()

这个方法可以从二进制数据直接创建显示列表中的条目。例如,在我的电子邮件客户机上,假如从 Pop3 服务器上下载的一个电子邮件包含附件,就检查附件的 mime-type。假如这种类型是播放器支持的,那么就可以将附件的二进制源代码读入 ByteArray,并在 Flash Player 中显示这个附件。这意味着我的电子邮件客户机可以显示 PNG、JPEG、GIF 和 SWF 附件。

Sound.computeSpectrum()

这个方法分析播放的所有声音并返回一个 ByteArray,其中包含 512 个归一化的值(-1 到 1),可以使用它们显示声音波形(256 个值用于左声道,256 个值用于右声道)。可以使用这些值为 Media Players 创建 Audio Equalizers 以及对播放的声音做出反应的视觉效果。

BitmapData.getPixels()

这个方法返回一个 ByteArray,其中包含位图的指定矩形区域中每个像素的十六进制颜色值。可以将这个方法与新的 ZLib 压缩方法 ByteArray.compress() 结合使用,从而将位图压缩,然后再发送给服务器,这样就能够将它转换为一个适合下载的文件。

Loader.close()

现在,可以停止播放器装载外部媒体的过程。在过去,假如将一个图像装载进播放器,那么在完成处理之前无法停止。现在可以这么做了。






ActionScript 3 的优点

这个新版本具有以下优点:

  • 这种语言支持类型安全性,使代码维护更轻松。
  • 与其他语言相比,这种语言相当简单,很轻易编写。
  • 开发人员可以编写具有高性能的响应性代码。
  • 这种语言向后兼容 ActionScript 2 并向前兼容 ECMAScript for XML(E4X)。





Tamarin 简介

在 2006 年 11 月 7 日,Adobe Systems 公布将 ActionScript Virtual Machine 的代码捐献给 Mozilla Foundation。因此,Mozilla 启动了一个新的开放源码项目 Tamarin。Adobe 和 Mozilla 希望以此促进这种创建 Web 应用程序的标准化语言的推广。

Tamarin 的目标

Tamarin 项目的目标是实现一个高性能的开放源码的 ECMAScript 第四版(ES4)语言规范实现。Mozilla 在 SpiderMonkey 中使用 Tamarin Virtual Machine,SpiderMonkey 是 Firefox 和其他基于 Mozilla 的产品中嵌入的核心 JavaScript 引擎。Adobe 将继续在 Adobe Flash Player 中的 ActionScript Virtual Machine 中使用这些代码。

Tamarin Virtual Machine 当前实现 ECMAScript 第三版语言标准(这是 JavaScript、Adobe ActionScript 和 Microsoft Jscript 采用的标准),还支持 ES4 中建议的一些新语言特性。社区正在开发 ES4 的开放源码实现,Adobe 和 Mozilla 希望以此促进这种创建 Web 应用程序的标准化语言的推广。Tamarin 项目的目标是帮助开发人员创建可以跨多个平台的效果丰富的高度交互性的用户体验。

Tamarin 的发展计划

Tamarin 将支持 ECMAScript 第四版(或者说 “JavaScript 2”)语言,并将集成进 Mozilla 2 项目中的 SpiderMonkey,预期在 2008 年发布。

Mozilla 的开放源码项目团队刚刚开始开发 Tamarin,它的一些目标技术包括:

  1. 将 Tamarin VM 和垃圾收集器集成进 SpiderMonkey 中
  2. 使用 SpiderMonkey 编译器生成 Tamarin 的代码
  3. 将即时编译器移植到新的硬件平台
  4. 完成 ECMAScript 4 编译器





使用 ActionScript 3 的简单示例

这个 ActionScript 示例显示欢迎消息 “Hello <Username>”。用户可以在文本框中输入用户名。按回车时,就会显示欢迎消息。


清单 1. 示例代码
                 
package {
    
    public class Greeter {

    /**
     * Defines the names that should receive a proper greeting.
     */
        public static var validNames:Array = ["Sammy", "Frank", "Dean"];
        
        /**
         * Builds a greeting string using the given name 
         */
        
        public static function sayHello (userName:String = ""):String {
            var greeting:String = "Hello World";
             
            if (userName == ""){
                greeting = "Hello, please type your name and then press the enter key";
            }
            else if(validName(userName)){
                greeting = "Hello, " + userName + ".";
            }
            else {
                greeting = "Sorry, " + userName + "Your name is not present in the list.";
            }
            return greeting;
        }
        
        /**
         * Check whether a name is in the validNames list
         */
        
        public static function validName(inputName:String = ""):Boolean {
            if validNames.indexOf(inputName) > -1 {
                return true;
            }
            else {
                return false;
            }
        }

    }
}

图 1 显示清单 1 的初始窗口。它显示最初的欢迎消息 “Hello, please type your name and then press the enter key”,然后等待用户在标签为 User Name 的文本框中输入用户名。


图 1. ActionScript 3 中的欢迎示例
ActionScript 3 中的欢迎示例

当用户在 User Name 框中输入 “Frank” 时,脚本会在预定义的 validNames 数组中寻找这个用户名。因为 “Frank” 在 validNames 数组中,所以在欢迎区域中会显示 “Hello Frank”,见图 2。


图 2. 用户输入用户名
用户输入用户名

假如用户输入的用户名不在 validNames 数组中,例如 “Anitha”,那么显示消息 “Sorry, Anitha, your name is not present in the list”。

在下面,我提供了关于 ActionScript 编程的出色的参考资料。还可以找到一个论坛的链接,使用 ActionScript 的开发人员在这里直接回答任何问题。新的 ActionScript Virtual Machine 和 Flash Player 有许多令人兴奋的改进,但是这超出了本文的范围。假如您还没有下载最新的 Flash Player 版本,就请下载它,体会一下它的众多优点。



参考资料

学习

获得产品和技术

讨论


关于作者

author photo

Anitha Ramaswamy 是在 Bangalore 的 IBM 印度软件实验室的 WebSphere Business Integration Adapters 团队工作的软件工程师。她的专业领域包括 Java? 和 Java 2 Enterprise Edition(J2EE?)技术。她从事 OS/2? Presentation Manager 已经三年了。她还从事开放源码 Tuscany 项目和印度软件实验室的 EPCIS 团队的 RFIDIC 1.0 安装程序开发项目。她拥有 Bangalore 的 Vishwesvaraya Technological University 的电子和通信学士学位。可以通过 aramaswa@in.ibm.com 联系 Anitha。


视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058