About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Apr

    9

    样例代码如下:乱码.rar

    该样例文件产生效果如下:

    FLASH CS3 中测试,加载和复制完全正常。

    FLASH CS5 中测试,发布设置发必须设置成FLASH 9播放器才能正常,如果设置成FLASH 10以上版本,就会非法操作。

    FLEX 3.6 中测试,加载和复制完全正常。

    FLEX4.6 中测试,加载过程正常,复制也成功,但静态的中文文本全部变成乱码。
     

    如果避开反射机制,使用二进制加载的方式就能正常加载和复制(无论是FLASH或FLEX,无论发布成什么版本都正常)。

    解决方法的样例代码如下:

    var loader:Loader = new Loader();
    loader.x = 400;
    addChild(loader);
    loader.contentLoaderInfo.addEventListener(Event.INIT, loadInitHandler);
    loader.load(new URLRequest("ye.swf"));
    function loadInitHandler(evt:Event):void {
     var cloneLoder:Loader = new Loader();
     addChild(cloneLoder);
     cloneLoder.loadBytes(loader.contentLoaderInfo.bytes);
    }

    More...

    Oct

    29

    取得外部被加载的SWF对象的类引用方法, 取得类引用后就可以通过 new 来实例化生成多个对象了:

    var contentMc:MovieClip = e.target.content as MovieClip;
    var moduleClassName:String = getQualifiedClassName(contentMc);
    var appDomain:ApplicationDomain = contentMc.loaderInfo.applicationDomain;
    var ModuleClass:Class = appDomain.getDefinition(moduleClassName) as Class;

    一个更简单的方法是利用 constructor 属性来取得文档类的引用:

    var contentMc:MovieClip = e.target.content as MovieClip;
    var ModuleClass:Class = contentMc.constructor as Class;

    More...