【问题标题】:Load SWF from embedded file in Flash从 Flash 中的嵌入文件加载 SWF
【发布时间】:2012-09-18 07:42:13
【问题描述】:

通常我们使用“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;

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

【问题讨论】:

    标签: actionscript-3 flash loader


    【解决方案1】:

    我认为你应该使用 Loader 类的 loadBytes,类似于这里描述的解决方案:how to embed swf file

    【讨论】:

      【解决方案2】:

      你应该能够简单地做到这一点:

      addChild(new component());
      

      希望名称 component 不会与任何保留变量发生冲突。

      如果您仍想使用Loader 类,正如@Lukasz 建议的那样,请使用loadBytes() 方法并传递嵌入的资产。如果您的 swf 还包含代码,您可能需要初始化 LoaderContext:

      var ctx:LoaderContext = new LoaderContext(false,this.loaderInfo.applicationDomain);
      ctx.allowCodeImport = true;
      Loader(addChild(new Loader())).loadBytes(new Components(),ctx);
      

      【讨论】:

      • 我尝试使用 'addChild(new component());'但这会导致一堆错误。如果我编译 flex 应用程序以使用 RSL,flash 无法加载依赖项,我不知道为什么。
      • 我不确定所有可能的错误是什么,但我至少可以想到一个常见空对象引用的实例:舞台。如果您的 swf 在初始化后立即尝试访问该阶段,那么当您编译 swf 本身时代码可能会正常工作,但是当您加载它并创建一个新实例时,它还没有添加到显示列表中,所以在这种情况发生之前,stage 将为 null,在这种情况下,我建议使用 Event.ADDED_TO_STAGE 的事件处理程序来初始化您加载的 swf 中的 stage 相关代码。 HTH
      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2011-04-24
      • 1970-01-01
      • 2010-11-21
      相关资源
      最近更新 更多