Actionscript 3 从闪存中的嵌入文件加载SWF

Actionscript 3 从闪存中的嵌入文件加载SWF,actionscript-3,flash,loader,Actionscript 3,Flash,Loader,通常我们使用“Loader”类将外部swf文件加载到Flash中 var loader:Loader = new Loader(); loader.load(new URLRequest("http://domain/path/my-external-swf.swf")); 但是,外部swf文件现在已嵌入到我的flash文档中: [Embed("my-external-swf.swf")] public var component:Class; 是否可以告诉“Loader”从嵌入式内容加载?

通常我们使用“Loader”类将外部swf文件加载到Flash中

var loader:Loader = new Loader();
loader.load(new URLRequest("http://domain/path/my-external-swf.swf"));
但是,外部swf文件现在已嵌入到我的flash文档中:

[Embed("my-external-swf.swf")]
public var component:Class;

是否可以告诉“Loader”从嵌入式内容加载?

我认为您应该使用Loader类的loadBytes,类似于这里描述的解决方案:

您应该能够简单地执行以下操作:

addChild(new component());
希望名称
组件
不会与任何保留变量冲突

如@Lukasz所建议的,如果您仍然希望使用该类,请使用该方法并传递嵌入的资产。如果swf还包含代码,则可能需要初始化:


我尝试使用“addChild(newcomponent());”但这会导致一系列错误。如果我编译flex应用程序使用RSL,flash无法加载依赖项,我不知道为什么。我不确定所有可能的错误是什么,但我至少可以想到一个常见空对象引用的实例:stage。如果您的swf尝试在阶段初始化后立即访问该阶段,则在编译swf本身时,代码可能会正常工作,但当您加载它并创建新实例时,它尚未添加到显示列表中,因此在此之前阶段将为空,在这种情况下,我建议使用event.ADDED_TO_STAGE的事件处理程序来初始化加载的swf中与阶段相关的代码。嗯
var ctx:LoaderContext = new LoaderContext(false,this.loaderInfo.applicationDomain);
ctx.allowCodeImport = true;
Loader(addChild(new Loader())).loadBytes(new Components(),ctx);