• 自定义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、上面两个示例的源码

  • 相关阅读:
    摩尔定律 四
    为什么要重载new? 四
    JS 完美识别IE FIREFOX CHROME safari
    Chrome的JS调试工具
    JetBrains WebStorm 6注册码(其实版本v4, v5, v6都通用)
    require.js 入门学习
    str_replace、preg_replace、strtr比较
    获取当前IP地址,跳转到对应城市网站。
    mysql大数据高并发处理(转)
    SESSION的安全性(转)
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2182596.html
Copyright © 2020-2023  润新知