【问题标题】:Pass variable via URLRequest通过 URLRequest 传递变量
【发布时间】:2015-05-28 06:34:48
【问题描述】:

我在另一个 swf 中显示外部 swf。我阅读了保留外部 swf 路径的 XML 文件。在某些时候,我需要外部函数的结果。那么是否可以通过 URLRequest 传递结果并获取它?

代码如下:

var contentLoader:Loader;
var context:LoaderContext = new LoaderContext();        
contentLoader = new Loader();       
contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, contentLoadingCompleteActions);
contentLoader.load(new URLRequest(url), context);

url 来自 XML 解析器,正如我之前所说。如果可能的话,我想加载 swf 并获取选定的变量。


A (main swf) - 通过 URLRequest 导入 swf

B (imported swf) - 必须向 A 发送一个值

【问题讨论】:

  • 那么生成你需要的结果的函数是在导入的swf文件里面吗?我认为您不能从外部访问 swf 文件中的任何变量。如果您更具体地描述您正在尝试做的事情,也许还有另一种方式。
  • 这正是我想要做的。无论如何我都可以处理它,但我不确定是否可以通过 URLRequest 进行处理。

标签: xml actionscript-3 flash


【解决方案1】:

您当然可以在这两个文件之间“交流”。首先,loader.contentLoaderInfo.content 是您实际加载的 swf 文件。因此,您可以在其上调用方法 - 在分配的类或时间轴上(不好)。这样您就可以访问属性甚至函数:

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, contentLoadingCompleteActions);
loader.load(new URLRequest(url), context);

function contentLoadingCompleteActions(event:Event) {
    // event.target is your loader
    var swf = event.target.content as MovieClip; // or even cast to document class!
    swf.getVariable(); // call method / get result
}

加载的 swf 也是如此 - 它可以访问它的父级 AFTER 它被添加到阶段(因此它可以有父级):

var parentObject:MovieClip = parent.parent as MovieClip; // or cast to document class
parentObject.callParentMethod();

您可以强制转换为不同的类(对象、类,任何您想要的)以便在它们之间进行通信。

【讨论】:

  • 嗯,swf.getVariable() 的错误 1009 在我的代码中当然不是 getVariable,但它找不到它。我想我必须对我的代码进行更多的调整和调整。谢谢...
  • 原因是swf 为空。 等待加载,然后访问它!此代码应在contentLoadingCompleteActions 内。我已经更新了我的答案。
  • 在LoaderInfo 找不到contentLoaderInfo 属性。我确定我导入了 flash.display.Loader 就足够了。*sigh*
  • 哦,哦,我的错,它已经是加载器信息,所以你只需要loader.content或event.target.content。对不起。
猜你喜欢
  • 2018-10-11
  • 2011-10-19
  • 2014-12-25
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
相关资源
最近更新 更多