0

我的 html 文件中存储了一个 flash var:

<script type="text/javascript">

    var flashvars = {

        map:"mapGAcentury21.xml"

    };

    var params = {

        menu: "false",

        scale: "noScale",

        allowFullscreen: "true",

        allowScriptAccess: "always",

        bgcolor: "#FFFFFF"

    };

    var attributes = {

        id:"REMap"

    };

    swfobject.embedSWF("REMap.swf", "altContent", "840", "630", "9.0.0", "expressInstall.swf", flashvars, params, attributes);

</script>

我有一个在 FlashDevelop 中开发的 Flash 应用程序。在这个 Flash 应用程序中,我加载了一个名为 728x90.swf 的文件。我可以自由编辑我的 728x90.fla 文件,但我不想更改我的主要 Flash 应用程序文件。

如何从 728x90.swf 文件中访问 flashvars 变量?

编辑:

The following codes traced "your variable is undefined" 
1. trace("your variable is " + stage.loaderInfo.parameters.flashvars); 
2. trace("your variable is " + loaderInfo.parameters.flashvars); 
3. trace("your variable is " + loaderInfo.parameters.flashvars.map);
4. trace("your variable is " + stage.loaderInfo.parameters.flashvars.map);

编辑 2:我将整个 javascript 代码粘贴到我的原始帖子中。我的 flashvars 被传递到名为“REMap.swf”的主 swf 文件中 REMap.swf

public var requestAd:URLRequest = new URLRequest("media/728x90.swf");

然后在一个函数中,以下代码加载我的 728x90.swf 文件

loaderAd.load(requestAd);
addChild(loaderAd);
loaderAd.contentLoaderInfo.addEventListener(Event.COMPLETE, promoLoaded);
4

4 回答 4

2

可以通过调用获取父swf的参数

parent.loaderInfo.parameters
于 2012-03-25T11:58:59.600 回答
0

简单的回答:

创建一个变量并将其命名为您想要的任何名称。我尝试了以下三个:

var s1:String = stage.loaderInfo.parameters["map"];
var s2:String = this.root.loaderInfo.parameters["map"];
var s3:String = root.loaderInfo.parameters.map;

trace(s1 + " " + s2 + " " + s3);

输出:mapGAcentury21.xml null null

答:为了从子 swf 访问父 swf 的 flashvar,请使用以下代码:

var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"];
trace(s1);
于 2010-11-11T17:25:17.403 回答
0

菲尔是正确的:

var s1:String = stage.loaderInfo.parameters["map"];

会起作用,只有当子 SWF 已经添加到舞台时才会起作用。这会在加载完成后发生一个/一些帧。您可以像这样收听孩子中的事件:

public function instantiateChildClass(){
   trace(stage.loaderInfo.parameters["map"]); //throws error if this SWF has just been loaded into a parent SWF
   addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{
   removeEventListener(Event.ADDED_TO_STAGE, init);
   trace(stage.loaderInfo.parameters["map"]); //traces map param
}
于 2012-01-17T03:02:05.703 回答
0

您的文档对象是一个MovieClip. 与 MovieClip 关联的 flashvars 存储在其loaderInfo.parameters属性中。stage.loaderInfo.parameters除非您希望将 flashvars 与原始调用 flash 电影相关联,否则不要从中获取 flashvars 。

编辑添加:

阅读有关如何将 flashvars 传递给 flash 视频的信息。我感觉您正试图从 Flash 访问 JavaScript 对象。这也可以做到,您只需要阅读flash.external.ExternalInterface

编辑#2:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf");

应该是:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf?map=mapGAcentury12.xml");

查看swfobject.embedSWF调用生成的 HTML。它可能无法正确发送 flashvar。

于 2010-11-11T15:33:05.123 回答