Actionscript 3 从子加载的swf访问HTML中定义的flashvar?答复如下
我的html文件中存储了一个flash变量: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
<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