有需要的可以去跑一下。
如何使用这个例子
1.把AsChild.as中str赋值的部分编译两次,得到2个SWF文件,分别命名为AsChild.swf和AsChilden.swf。
2.把上面两个SWF文件拷贝到Parent.mxml所在工程的bin目录下。
3.通过更改Parent.mxml中注释(同时修改domain的赋值),来查看变化
AsChild.as
package {
import flash.display.Sprite;
public class AsChild extends Sprite
{
public function AsChild()
{
}
public function show():String{
return str;
}
private var str:String = '您好';
//private var str:String = 'Hello';
}
}
Parent.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.controls.Alert;
private var loaderZH:Loader;
private var loaderEN:Loader;
private var swfLoaded:int;
public function init():void{
var url:String = 'AsChild.swf';
var request:URLRequest = new URLRequest(url);
var domain:ApplicationDomain = ApplicationDomain.currentDomain;
//var domain:ApplicationDomain = new ApplicationDomain();
//var domain:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
var policyFile:Boolean = false;
var context:LoaderContext = new LoaderContext(policyFile,domain);
loaderZH = new Loader();
loaderZH.contentLoaderInfo.addEventListener(Event.COMPLETE,AsCompleteHandle);
loaderZH.load(request,context);
url = 'AsChilden.swf';
request = new URLRequest(url);
domain = ApplicationDomain.currentDomain;
//domain = new ApplicationDomain();
//domain = new ApplicationDomain(ApplicationDomain.currentDomain);
context = new LoaderContext(policyFile,domain);
loaderEN = new Loader();
loaderEN.contentLoaderInfo.addEventListener(Event.COMPLETE,AsCompleteHandle);
loaderEN.load(request,context);
}
private function AsCompleteHandle(e:Event):void{
swfLoaded++;
if(swfLoaded == 2) {
AsCompleteHandleTwo();
}
}
private function AsCompleteHandleTwo():void{
var zhNewClass:Class = loaderZH.contentLoaderInfo.applicationDomain.getDefinition("AsChild") as Class;
var zhClass:Object = new zhNewClass();
Alert.show(zhClass.show());
var enNewClass:Class = loaderEN.contentLoaderInfo.applicationDomain.getDefinition("AsChild") as Class;
var enClass:Object = new enNewClass();
Alert.show(enClass.show());
}
]]>
</mx:Script>
</mx:Application>