在 SWF 之间传递值

Passing values between SWFs

我可以从父 SWF 访问子 SWF 的变量,但我想将父变量传递给子变量以通知和操作子变量中的不同内容(取决于变量,基本条件)。是否可以加载 SWF 并传递 var 或值?


private function callFile()
{
    loader = new Loader;
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
    loader.load(new URLRequest("main.swf"));
}

private function onLoaded(e:Event)
{
    level_no = loader.content['level'];
}

这是父->子变量读取。我想要双向传输。

您可以只使用查询参数来加载您的 swf :

loader.load(新 URLRequest("main.swf?var=17&var2=lol"));

然后,在您的子 swf 文件中,使用:

stage.root.loaderInfo.parameters.var
stage.root.loaderInfo.parameters.var2

它会完成工作。

在子 SWF 文件中使用 loaderInfo.loader.loaderInfo.content['myVar']; 而不是 loader.content['level'];。 myVar 是父 SWF 文件中定义的变量。

可以调用或访问 swf 中任何 public 定义的方法或变量。如果您在 swf 中定义了一个名为 doSomething 的方法,那么您可以这样做:

MovieClip(loader.content).doSomething(myParentVariable);
//or
var level:int = MovieClip(loader.content).level;

要在 "parent" swf 到其加载的 "child" swf 之间传递参数,您可以使用 LoaderContext object 来执行此操作:

loader.swf (parent) :

var context:LoaderContext = new LoaderContext();
    context.parameters = {'passed_param': 'value'};

var loader:Loader = new Loader();
    loader.load(new URLRequest('loaded.swf'), context);
    addChild(loader);

loaded.swf (child) :

trace(this.loaderInfo.parameters.passed_param); // gives : value

希望能帮到你。