Loader的 load方法有两个参数
第二个参数是LoaderContext对象
LoaderContext对象里有一个applicationDomain( 程序 域)对象
设置程序域对象能够设置两个SWF之间的共享库...
加载器的 ApplicationDomain 的子级。 默认值。 能够使用语法 new ApplicationDomain(ApplicationDomain.currentDomain) 显式表示这种选择。 这将容许所加载的 SWF 文件直接使用父级的类,例如,可经过编写 new MyClassDefinedInParent() 来使用。 可是父级则不能使用此语法;若是父级要使用子级的类,它必须调用 ApplicationDomain.getDefinition() 来检索它们。 这种选择的优势是,若是子级定义的类与父级已经定义的类同名,不会出现错误结果;子级只会继承父级对该类的定义,除非子级或父级调用 ApplicationDomain.getDefinition() 方法来检索子级的冲突定义,不然将不使用此定义。
app
var loader:Loader = new Loader(); this
var context:LoaderContext = new LoaderContext();
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
loader.load( new URLRequest( " text.swf " ),context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
function onComplete(e:Event): void
{
var Circle:Class = this.loaderInfo.applicationDomain.getDefinition("Circle") as Class;
var circle:MovieClip = new Circle();
addChild(circle);
}
// 输出:ReferenceError: Error #1065: 变量 Circle 未定义。
at flash.system::ApplicationDomain / getDefinition()
at load_fla::MainTimeline / onComplete()
加载器本身的 ApplicationDomain。 使用 ApplicationDomain.currentDomain 时请使用此应用程序域。 加载完成后,父级和子级能够直接使用对方的类。 若是子级试图定义的类与父级已经定义的类同名,将出现错误并放弃加载。
spa
var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
loader.load( new URLRequest( " text.swf " ),context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
对象
function onComplete(e:Event): void
{
var Circle:Class = this .loaderInfo.applicationDomain.getDefinition( " Circle " ) as Class;
var circle:MovieClip = new Circle();
addChild(circle);
}
// 正常加载
系统 ApplicationDomain 的子级。 使用 new ApplicationDomain(null) 时请使用此应用程序域。 这将彻底分离加载方和被加载方,从而容许它们使用相同的名称定义各自版本的类而且不会产生冲突或隐藏。 一方查看另外一方的类的惟一方式是调用 ApplicationDomain.getDefinition() 方法。
继承
var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
context.applicationDomain = new ApplicationDomain( null );
loader.load( new URLRequest( " text.swf " ),context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
function onComplete(e:Event): void
{
var Circle:Class = this .loaderInfo.applicationDomain.getDefinition( " Circle " ) as Class;
var circle:MovieClip = new Circle();
addChild(circle);
}
// 输出:ReferenceError: Error #1065: 变量 Circle 未定义http://www.shengshiyouxi.com。
at flash.system::ApplicationDomain / getDefinition()
at load_fla::MainTimeline / onComplete()
其它 ApplicationDomain 的子级。 有时可能会有更复杂的 ApplicationDomain 层次结构。 能够将 SWF 文件从您本身的 SecurityDomain 加载到任何 ApplicationDomain 中。 例如,new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain) 将 SWF 文件加载到当前域父级的父级的新子级中。 ip