Actionscript 3 从子加载的swf访问HTML中定义的flashvar?答复如下

Actionscript 3 从子加载的swf访问HTML中定义的flashvar?答复如下,actionscript-3,flash-cs4,flash-cs3,flashvars,Actionscript 3,Flash Cs4,Flash Cs3,Flashvars,我的html文件中存储了一个flash变量: <script type="text/javascript"> var flashvars = { map:"mapGAcentury21.xml" }; var params = { menu: "false", scale: "noScale", allowFullscreen: "true", allowScrip

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

<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>
编辑2: 我将我的全部javascript代码粘贴到我的原始帖子中。我的FlashVar被传递到名为“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);

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

编辑以添加:

了解。我感觉您正在尝试从flash访问JavaScript对象。这也可以做到,你只需要仔细阅读

编辑#2:

应该是:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf?map=mapGAcentury12.xml");
查看
swfobject.embedSWF
调用生成的HTML。它可能没有正确发送FlashVar。

简单回答:

创建一个变量,并根据需要命名它。我尝试了以下三种方法:

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

答复: 要从子swf访问父swf的FlashVar,请使用以下代码:

var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"];
trace(s1);
菲尔说得对:

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
}

您可以通过调用

parent.loaderInfo.parameters

我没有试图更改flashvars,我只需要阅读它。以下代码跟踪“您的变量未定义”跟踪(“您的变量是”+stage.loaderInfo.parameters.flashvars);跟踪(“您的变量是”+loaderInfo.parameters.flashvars);跟踪(“您的变量是”+loaderInfo.parameters.flashvars.map);跟踪(“您的变量是”+stage.loaderInfo.parameters.flashvars.map);我注意到您的“FlashVar”位于javascript对象中。FlashVar通过要加载的swf的url的查询字符串传递。如果您只想让脚本访问javascript,那么这是一个完全不同的问题。
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
}
parent.loaderInfo.parameters