flex导入外部库

一、可以使用命令行 MXML 编译器 (amxmlc) 来编译 AIR 应用程序的 Adobe® ActionScript® 3.0 和 MXML 资源:

amxmlc [compiler options]
 -- MyAIRApp.mxml

其中 [compiler options] 指定编译 AIR 应用程序所使用的命令行选项。

amxmlc 命令通过附加参数 +configname=air 调用标准 Flex mxmlc 编译器。该参数指示编译器使用 air-config.xml 文件,而不是 flex-config.xml 文件。在其他方面,使用 amxmlc 与使用 mxmlc 相同。Flex 3 文档库中的《构建 和部署 Flex 3 应用程序 》介绍了 mxmlc 编译器和配置文件格式。

编译器加载的 air-config.xml 配置文件指定编译 AIR 应用程序通常所需的 AIR 和 Flex 库。您还可以使用本地项目级配置文件覆盖或添加全局配置的其他选项。通常,创建本地配置文件的最简便方式是编辑全局版本的副本。通过 -load-config 选项可以加载本地文件:

-load-config=project-config.xml 覆盖全局选项。

-load-config+=project-config.xml 向采用多个值的全局选项(例如 -library-path 选项)添加其它值。仅采用一个值的全局选项将被覆盖。

如果对本地配置文件使用特定命名约定,amxmlc 编译器会自动加载本地文件。例如,如果主 MXML 文件为 RunningMan.mxml ,则将本地配置文件命名为 RunningMan-config.xml 。 现在,您只需键入以下内容即可编译应用程序:

amxmlc RunningMan.mxml

由于 RunningMan-config.xml 的文件名与编译的 MXML 文件的文件名匹配,因此将自动加载该文件。

<!-- -->

amxmlc 示例

下面的示例演示如何使用 amxmlc 编译器。(只能编译应用程序的 ActionScript 和 MXML 资源。)

编译 AIR MXML 文件:

amxmlc myApp.mxml

编译和设置输出名称:

amxmlc –output anApp.swf -- myApp.mxml

编译 AIR ActionScript 文件:

amxmlc myApp.as

指定编译器配置文件:

amxmlc –load-config config.xml -- myApp.mxml

从其他配置文件添加其他选项:

amxmlc –load-config+=moreConfig.xml -- myApp.mxml

在命令行中添加库(除了配置文件中的已有库以外):

amxmlc –library-path+=/libs/libOne.swc,/libs/libTwo.swc  -- myApp.mxml

在不使用配置文件的情况下编译 AIR MXML 文件 (Win):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
[AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
-library-path [Flex 3 SDK]/frameworks/libs/framework.swc ^ 
-- myApp.mxml

在不使用配置文件的情况下编译 AIR MXML 文件(Mac OS X 或 Linux):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, \ 
[AIR SDK]/frameworks/libs/air/airframework.swc, \ 
-library-path [Flex 3 SDK]/frameworks/libs/framework.swc \ 
-- myApp.mxml

编译 AIR MXML 文件以便使用运行时共享库:

amxmlc -external-library-path+=../lib/myLib.swc -runtime-shared-libraries=myrsl.swf -- myApp.mxml

使用 Java 编译(将类路径设置为包含 mxmlc.jar ):

java flex2.tools.Compiler +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml

flexlib 选项标识 Flex SDK 框架目录的位置,并使编译器能够查找 flex_config.xml 文件。

使用 Java 编译(未设置类路径):

java -jar [Flex SDK 2]/lib/mxmlc.jar +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml
<!-- BEGIN USER PREFERENCES -->
<!-- END USER PREFERENCES -->
 二、在flash builder中

关于AS里的RSL机制以及好处我就不说了,我说说复杂项目中的使用方法。
算是对他们文章的一个补充延伸吧。

我准备说的使用RSL方法,简单的说就是:事情分两步走
(1)flex编写代码的时候:使用设置为不嵌入代码 的.swc类库
(2)swf运行的时候:加载包含模块、类、代码、嵌入图片、声音等资源的.swf文件

——————-
如果你明白我上面的意思,并且在心里想说:我早就是这样做的!
呵呵,那也不需要再往下面看了^-^
—————————

<一>使用swf作为类库,常用方法存在的问题
先说说上面两位文章里讲的使用方法(以Y.Boy里的代码为例):
// 获得类引用
var AdobeClass:Class = getDefinitionByName(”cn.riahome.classes::Adobe”) as Class;
// 新建实例
var adobe:* = new AdobeClass();

简单的项目可以这样做,相对复杂点的项目,比如多个模块开发,这样做就存在问题了:
1 想获得类引用,必须知道并且写正确类的命名空间以及类的类名
(写起来肯定麻烦,并且你拼写错了,编译器也不会报错,只有当运行的时候才会发现)

2 新建实例只能通过new 的方式,某些实现单例的方式就不能用
(如果AdobeClass类是单例,你想获得单例,你写AdobeClass.getInstance()编译器就报错了) 

3 编写代码时没有代码提示,用起来麻烦。

并且还有…此出省略一万五千字
<二>介绍RSL类库的新使用方法

(1) 先获得RSL的源材料:swc和swf
1 把你的类、资源等做成swc(或者是别人开发的swc)
最简单的方法是Flex 里新建 Library project工程

2 新建一个as工程,就一个任务:引入刚才制作好的swc的各个类及资源
发布这个工程,获得swf

(2) 编写项目模块(ActionScript Modules)代码时使用swc

1 在你的项目里,设置项目属性,添加外部库路径,把得到的swc添加进来
Properties -> ActionScript Build Path -> Library path -> add SWC

2 设置swc的连接类型为外部 (这是最重要的一步)
点刚才加入的swc前面的’+'号,双击 Link Type: Merged into code 这一项,在弹出的窗口中,将Link Type设置成External。

Flex实际复杂项目中RSL运行时共享库的使用方法

这样设置swc,你编写代码的时候,你的类,你的资源,就可以像正常导入进来一样,自由使用。
编写的时候也有代码提示,甚至你的代码里都出现了 import cn.riahon.classes.Adobe,类不管是什么随便用,但在发布的时候却不会把这个类以及swc里所有的资源类编译进去。
(发布的时候其实不存在这些类,可以理解成暂时性的“欺骗”了flash)

(3) 运行时加载swf获得类库
主swf运行的时候,使用Loader加载包含类库的 swf Libs文件(第一步得到的那个swf),从而引入libs里的类。
你可以觉定加载的类库所放入的作用域ApplicationDomain,以便在不用的时候可以把加载的类给删除掉。

加载完swf以后(Event.INIT 事件 后),你就可以使用这个各个类。
如果是模块开发,这个时候可以再去加载使用到这些类的模块。
(总之,一定确保在没有加载完之前千万不要使用)

你可能感兴趣的:(xml,Flex,Adobe,AIR,actionscript)