我的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被传递到我的主swf文件中,名为“REMap.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);
答案 0 :(得分:2)
您可以通过调用
来获取父swf的参数parent.loaderInfo.parameters
答案 1 :(得分:0)
您的文档对象是MovieClip
。与MovieClip关联的flashvar存储在其loaderInfo.parameters
属性中。除非您想要与原始调用flash影片相关联的flashvars,否则不要从stage.loaderInfo.parameters
获取flashvars。
编辑添加:
了解how to pass flashvars to a flash video。我感觉你正试图从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。它可能没有正确发送flashvars。
答案 2 :(得分: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的flashvars,请使用以下代码:
var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"];
trace(s1);
答案 3 :(得分:0)
var s1:String = stage.loaderInfo.parameters["map"];
如果已将子SWF添加到舞台中,将起作用,但 仅才能正常工作。这在加载完成后发生一个/一些帧(s?)。 您可以像这样听孩子的事件:
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
}