在 Adobe AIR 的首页上,就给出了三种 AIR 编程的途径:
- Ajax – 主要编写 HTML 和 JavaScript 代码,对于经常编写 Web 应用的程序员们来说,很容易上手。
- Flex – 我不太熟悉,应该是配置文件主导的一种方式吧,有可视化设计工具。
- Flash – 利用可视化设计工具设计界面,配合编写 ActionScript 代码。
Flex 编程中应该也会用到大量的 AS 编程,但是 Ajax 方式的 AIR 呢?一开始,我认为它利用与 Web 编程几乎没有差别的环境吸引了以前熟悉 Web 应用的开发者,但是却牺牲了 Flash 强大的表现能力,如果用 JavaScript 实现 Flash 同等的动画效果,难度和复杂度应该会大很多。
但是很快我就发现这个顾虑是多余的。Adobe 的 livedocs 中就有一个页面教大家怎么在 HTML 页面中调用 AS 的 library:”Using ActionScript libraries within an HTML page”
Adobe 对 webkit 做了一个小小的扩展,使其支持新的脚本并与 JavaScript 互通:
[code lang=’html’]
[/code]
该 swf 中的 AS 代码里的变量,怎么在 JavaScript 中引用呢?通过 window 变量一个特定的属性 runtime:
[code lang=’javascript’]
var libraryObject = new window.runtime.LibraryClass();
[/code]
大家还是看帮助页面吧,不过我几乎快把人家的东西全抄过来了。ActionScript 3 和 JavaScript 本来就应该遵循一个标准 – ECMAScript,这样也合情合理。
有些人可能奇怪了,你既然选择了使用 Ajax 途径,干嘛还又要用 AS 呢?其实就是有时候图个省事。比如我要写一个 “推特” 客户端,上网一搜,发现了根正苗红(倒不一定非常好)的 twitterscript,不想再重新造轮子,不过它是用 AS3 写的,我也懒得再把它翻译成 JS.
于是把项目提供下载的 swc 文件拿回来——那其实是一个 zip 格式,解压后,拿到我们想要的 library.swf,把它按照 Adobe 教的方法加到 AIR 程序的 HTML 页面中,马上就可以在 JavaScript 中使用这个库了!
有耐心看到这里的读者一定有个很大的疑问,怎么从一堆 AS3 代码得到这个 swf 文件的呢?假如要对 twitterscript 的源代码做一下修改怎么办?这还得回到刚才的那个 livedocs 页面,最下面有个 Note:
To compile an ActionScript SWF library for use as part of an HTML page in AIR, use the acompc compiler.
这里就不再细说了,这个 acompc 在 Flex SDK 中有,和其中的 compc 其实是一个东西(我觉得)。有兴趣的朋友自己去研究一下怎么编译吧,也许我再有空了会写一篇文章说说这个。
Update: 说时迟,那时快——如何将 AS 文件编译成为 swf