【编写ActionScript代码的工具】

ActionScript代码是用纯文本编写的,所以ActionScript程序可以仅由简单的文本编辑器来创建,如Windows上的记事本或Macintosh上的TextEdit。然而,大多数ActionScript程序员都使用Adobe公司出品的两个商业软件之一(或两者都用):Flex BuilderFlash制作工具

Flex Builder是集成开发环境,或者叫IDE。IDE是用来编写和管理代码的应用程序,就像字处理程序是来用创建和打印文档的程序一样。程序员用Flex Builder来创建软件应用和多媒体内容,使用ActionScript或MXML,或两者都用。MXML是基于XML的语言,用来描述用户界面。

相比之下,Flash制作工具是一个设计、动画和编程的杂合编辑器。程序员使用Flash制作工具,通过结合ActionScript代码和手工绘制的图形、动画和多媒体资源,来创建软件应用和多媒体内容。

ActionScript 3.0被Flex Builder 2或更高版本和Flash CS3(版本9的Flash制作工具)或更高版本所支持。要获得一个Flex Builder的拷贝,请访问http://www.adobe.com/products/flex/productinfo/overview/,要获得一个Flash制作工具的拷贝,请访问http://www.adobe.com/go/flash/

本书的绝大部分集中于用纯ActionScript(即只用代码)来创建软件应用和多媒体内容。第29章包含了ActionScript在Flash制作工具中的用法。本书特别不包含MXML的内容,要了解MXML的有关内容,请参阅O'Reilly的《Flex2编程》(Kazoun和Lott合著,2007年)和Adobe的Flex Builder文档。

【Flash客户运行时环境】

ActionScript程序可以在三种不同的软件应用程序(都是Adobe出品)上执行:Flash播放器Adobe AIRFlash Lite

Flash播放器在网页浏览器中或在桌面单机模式下执行ActionScript程序。Flash播放器几乎没有操作系统访问权(例如:它不能管理文件、控制窗口或访问大部分硬件)。

Adobe AIR在桌面上执行ActionScript程序并且和桌面操作系统完全集成(例如:它可以管理文件,控制窗口并访问硬件)。

Flash Lite在移动设备,如手机上执行ActionScript程序。本书出版时,Flash Lite可以执行ActionScript 2.0但不能执行ActionScript 3.0编写的ActionScript程序,而Flash播放器和Flash AIR可以执行ActionScript 3.0编写的程序。因此,本书讲授的技术适用于Flash播放器和Flash AIR但不适用于Flash Lite,除非它增加了对ActionScript 3.0的支持。

一般来说,Flash播放器、Adobe AIR和Flash Lite都被称为Flash客户运行时环境(或简称Flash运行时),因为当ActionScript程序被执行或“运行”时,它们管理着程序。Flash运行时在Windows、Macintosh和Linux以及多种不同的移动硬件设备上可用。因为ActionScript程序是被Flash运行时,而不是被特定的操作系统或硬件设备执行,每个ActionScript程序都被认为是可移植的,因为它可以在不同的硬件设备(手机,游戏控制台)和操作系统(Windows,Macintosh和Linux)上运行。

在非正式的讨论中,术语ActionScript虚拟机有时被用作Flash客户运行时环境的同义词。然而,这二者之间还是有差异,所以它们不应当被互换使用。ActionScript虚拟机(AVM)在技术上是在Flash播放器、Adobe AIR和Flash Lite内部执行ActionScript程序的软件模块。但是每个Flash运行时还负有其它责任,如显示内容到屏幕、播放视频音频以及和操作系统通信。运行ActionScript 3.0代码的ActionScript虚拟机的特定版本称为AVM2,运行ActionScript 1.0和ActionScript 2.0代码(本书未包含)的ActionScript虚拟机的特定版本称为AVM1。

【编译】

ActionScript程序在可被Flash运行时执行之前,必须从人可读的ActionScript 3.0代码转化为一种Flash运行时所理解的浓缩的二进制形式,称为ActionScript字节码,或ABC。然而,ActionScript字节码本身不能被Flash运行时执行;而必须被封装到一个称为.swf文件的二进制容器文件中,.swf文件把字节码和任何ActionScript程序所需的嵌入媒体资源都存储到Flash文件格式或称SWF中。将ActionScript程序转化为字节码的过程叫作编译该程序,生成.swf文件的过程叫作编译该.swf文件,有时也叫输出发布该.swf文件。

要编译ActionScript 3.0程序和.swf文件,我们使用一个叫编译器的软件模块。编译ActionScript代码的编译器叫作ActionScript编译器;生成.swf文件的编译器叫作SWF编译器。任何声称完全支持Flash文件格式的SWF编译器都包括一个ActionScript编译器。自然,Flex Builder 2和Flash制作工具都包含一个SWF编译器(并额外包括一个ActionScript编译器)。Flex Builder 2和Flash制作工具共享同一个ActionScript编译器,但却有不同的SWF编译器——分别叫作Flex编译器Flash编译器。Adobe还把Flex编译器作为一个单独的命令行程序提供,叫作mxmlc。mxmlc编译器包含在Adobe的免费开发者工具包Flex 2 SDK中,在http://www.adobe.com/go/flex2_sdk可以得到。

【即时编译(Just-In-Time Compilation)】

当ActionScript程序运行的时候,Flash运行时读取编译过的ActionScript字节码并将它翻译成本地机器码指令,在它所运行的特定的计算机硬件上执行。很多情况下,本地机器码指令被保存下来以便它们可以再次使用而不需要重新从ActionScript字节码翻译。

将ActionScript 3.0代码转化为字节码叫作编译,同样,将ActionScript字节码翻译成本地机器码并留待后续执行的过程也叫作编译。首先,程序员将人可读格式的代码编译成Flash运行时所理解的格式(ActionScript字节码),然后,Flash运行时自动将ActionScript字节码编译成运行程序的硬件所理解的格式(本地机器码),后面这种编译形式(字节码到机器码)被称为即时编译,或JIT,因为它就在程序需要特定的被编译的字节码之前立即发生。即时编译有时也叫动态翻译。有经验的程序员可能有兴趣了解,类定义的顶层不是即时编译的(因为它只被执行一次)。

【快速回顾】

前面几页覆盖了很多基础,让我们来回顾一下到现在为止都有些什么。

ActionScript程序是一个指令集,它被Flash运行时:Flash播放器、Adobe AIR或Flash Lite中的一个所执行。ActionScript程序可以用文本编辑器、Flex Builder或Flash制作工具来编写。要运行一个ActionScript程序,我们必须先用SWF编译器将它编译成.swf文件,如Flash制作工具中包含的Flash编译器,或Flex Builder 2和Flex 2 SDK中都包含的mxmlc。

Action Script 3.0入门基本概念——IDE&编译与运行的更多相关文章

  1. Android入门(创建、编译、运行、打包、安装)

    一.创建Android项目 1.选择Emtpy Activity=>Next 2.配置项目 输入Name(名称) Package.name(包名) Save location(保存位置) Lan ...

  2. ASP.NET Core 1.0 入门——了解一个空项目

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  3. ASP.NET Core 3.0 入门

    原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 AS ...

  4. ASP.NET Core 1.0 入门——Application Startup

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  5. Omnet++ 4.0 入门实例教程

    http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html 在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用. ...

  6. 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记

    VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...

  7. MongoDB入门必读(概念与实战并重)

    MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...

  8. Struts 2.0 入门

    1. Struts2.0 概述 Struts 2.0 是以 WebWork 为核心,采用拦截器的机制来处理用户的请求; Struts 2.0 是一个基于 MVC 设计模式的 Web 层框架; Stru ...

  9. Git 入门:概念、原理、使用

    出处: git入门:概念.原理.使用 git和Github 概念 Git --- 版本控制工具(命令). git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.git ...

随机推荐

  1. 使用TortoiseGit,设置ssh方式连接git仓库。

    开始设置之前的准备:建立项目文件夹,初始化git仓库(右键 git  init),右键打开 git bash ,git pull “仓库地址”, 把网站上的仓库代码拉取下来. TortoiseGit使 ...

  2. 第四章 生命周期函数--35 vue-resource发起get、post、jsonp请求

    vue-resource 官网 https://github.com/pagekit/vue-resource <!DOCTYPE html> <html lang="en ...

  3. mysql和oracle的语法差异(网络收集)

    oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了.oracle要分页的话,要换成rownum. oracle建表时,没有auto_increment,所 ...

  4. CH5104 I-country[线性DP+分类讨论]

    http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%B ...

  5. Android APK 手动签名

    首先,如果没有签名密钥,先生成密钥: keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore and ...

  6. 一例基于thinkphp,jquery和bootstrap渲染的查询数据分页器

    对于某些查询记录很多的结果,web页面不得不采用分页器,现在奉上一例代码,其主要逻辑是:由页面的dom 节点发起ajax请求,返回的查询结果根据页面布局需要进行切片:并根据总记录数和页面展现的条数算出 ...

  7. 如何配置IIS使其支持APK/WGT文件的下载

    1.打开Internet 信息服务(IIS)管理器: 2.选择需要配置的网站: 3.右侧功能界面双击进入“MIME类型”: 4.点击右侧“添加”按钮,在弹出窗口里文件扩展名输入:apk,MIME类型输 ...

  8. AOP 实现日志

    package com.foen.foensys.config; import com.alibaba.fastjson.JSON;import com.foen.foensys.model.SysL ...

  9. Linux培训教程lgzip命令详解和使用实例

    gzip不仅可以用来压缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式.据统计,gzip命令对文本文件有60%-70%的压缩率. 1.命令格式 ...

  10. Java多线程和并发(五),线程的状态

    目录 1.线程的六个状态 2.sleep和wait的区别 3.锁池(EntryList)和等待池(WaitSet) 4.notify和notifyall的区别 五.线程的状态 1.线程的六个状态 2. ...