自定义Flex Library的使用

一般为了达到资源或是组件的共用,会用到flex library。在flex library可以添加swf、图片资源或的引用。

使用方法:

在flash builder中右击选中“新建” –> “Flex Library Project”

image

输入工程名后,直接点击“Finish”,然后建立一个类。

image

在该类中,绑定指定的资源,如下代码所示:

package
{
[Bindable]
public class LibraryTest
{
public function LibraryTest()
{
}

[Embed(source="pic/test.png")]
public var abc:Class;
}
}
 
右击项目,选择“Properties(属性)”后,选中左侧“Flex Library Compiler”选项,在右侧窗口的“Additional compiler arguments”中追加
“-directory=true -output=../bin/”,点击“OK”,应用设置。
 
右击选中项目,点击“Build Project”即可编译该Library Project,之后可在bin目录下得到三个文件。

image

 

三个文件:“xxxx.swc、catalog.xml、library.swf”,其中xml是描述文件,swc可直接copy至工程的libs目录中使用,swf则需要在相应的类中加载后才能使用。

 

新建一个项目,用来测试上面生成的library.swf。

image

getClass.mxml的代码,下面代码中声明了一个变量bit1,为什么要声明这样一个“多余”的变量呢?如果使用swc并不需要这样做,而加载library.swf,因为在执行build project的时候,有一些类并未打包到library.swf中,所以在需要调用的程序中,需要加载这相应的类(比较上面的是图片对应的就是BitmapAsset)。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" minWidth="955" minHeight="600" creationComplete="inited()">

<mx:Script>
<![CDATA[
import mx.core.BitmapAsset;
import mx.core.UIComponent;

private function inited():void
{
var bit1:BitmapAsset;

var loader:Loader = new Loader();

var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
var req:URLRequest = new URLRequest("assets/library.swf");

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

loader.load(req, context);
}

private function onComplete(evt:Event):void
{
trace("library.swf--- loaded --- succ");

var cl:Class = ApplicationDomain.currentDomain.getDefinition("LibraryTest_abc") as Class;

var a:DisplayObject = new cl() as DisplayObject;

var ui:UIComponent = new UIComponent();
ui.addChild(a);

img.source = cl;

ui.x = 100;
ui.y = 200;

addChild(ui);
}

]]>
</mx:Script>

<mx:Image id="img" />

</mx:Application>

运行程序,可以看到图片资源均被加载了,使用了对该资源的统一管理(swf的用法与此类似)。

image

 

更多参考:

1、使用ApplicationDomain类

2、上面两个示例的源码

posted @ 2011-09-20 16:20  meteoric_cry  阅读(2350)  评论(0编辑  收藏  举报