Flex中对swf文件的操作

第一类:  Flex中操作 fla格式或as格式文件生成的swf;

相关代码如下

<mx:SWFLoader id="swfLoader" source="[加载的swf文件]" complete="swfComplete(event)" />

private var swfObj:Object;

private function swfComplete(evt:Event):void{

     //对swfObj赋值,通过操作swfObj来控制加载的swf文件;

     swfObj = SWFLoader(evt.target).content;

}

 

 

第二类: Flex中操作 mxml格式生成的 swf;

<mx:SWFLoader id="swfLoader" source="[加载的swf文件]" complete="swfComplete(event)" updateComplete="swfUpdateCom(event)" />

private var swfObj:Object;

private var swfSM:SystemManager;

private function swfComplete(evt:Event):void{

     swfSM = SystemManager(SWFLoader(evt.target.content));

     //在这里不能直接对 swfObj进行赋值,因为此时 swfSM.application 的值为 null;

}

private function swfUpdateCom(evt:Event):void{

     //对swfObj赋值,通过操作swfObj来控制加载的swf文件;

     if(swfSM!=null && swfObj==null){

           swfObj = swfSM.application;

     }

     //假如要在子swf中调用主swf函数需要在 子swf中设置一个Object类型的变量,给此变量赋值

     if(swfObj!=null){

           // _parentObj 是子swf中变量,可以通过它来调用主swf属性及函数;

           swfObj._parentObj = this;

     }

}

 

操作加载swf文件的前提:知道swf文件内的公有属性和方法名;

 

 

Flex中使用Flash类库中的元件

 

private var swfUrl=""; //库资源地址

private var ui:UIComponent =  new UIComponent();

private var loader:Loader = new Loader();

private var context:LoaderContext =  new LoaderContext();

private function init():void{

     //指定为当前域;

     context.applicationDomain=ApplicationDomain.currentDomain;

     //加载外部的swf库 loader.load()中的第2个参数 用来确定是否能使用加载的SWF中的库;    

     loader.load(new URLRequest(swfurl), context);  

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

}

private function onComplete(evt:Event):void{

     //得到类

     var classByName:Class = ApplicationDomain.currentDomain.getDefinition("元件名" ) as Class;  

      var mc:MovieClip = new classByName(); //从库中导出资源

     mc.x = 300;

     mc.y = 300;

     //添加到场景中;

     ui.addChild(mc);

     this.addChild(ui);

}

 

 

 在加载 swf 过程中 会出现 内存泄露的情况;

 解决方法:

 swfLoader.unloadAndStop(); //加载前先卸载;

 System.gc();  //调用垃圾回收方法;

 

 如有不当之处请批评指正。

 

转载自:http://greenexe.javaeye.com%2Fblog%2F911299

你可能感兴趣的:(UI,Flex,Flash)