无法在SWF中提取flashvars

时间:2011-03-31 22:50:59

标签: flash actionscript-3 flash-cs5

我有一个SWF,可以收集用户在网站上的反馈。所提出的问题以XML格式提取,使用通过页面中嵌入的flashvars提供的URL。不幸的是,这似乎在我的SWF的最新版本中已经破裂。

以下是我嵌入对象的方法:

<script src="swfobject.js"></script>
    <script type="text/javascript">
        swfobject.embedSWF("http://localhost/mysite/q.swf", "flashcontent", "900", "360", "9.0.0", "http://localhost/mysite/expressInstall.swf", { loadurl: escape("http://localhost/mysite/q.php?q=13") }, {}, {});
    </script>
  </head>
  <body>
    <div id="flashcontent">

    </div>
  </body>

我正试图像这样拉出loadurl flashvar:

this.loaderInfo.addEventListener(Event.COMPLETE, function(e:Event) {
                                    init();
                                 });
function init()
{
    *snip*
    loadurl = unescape((loaderInfo.parameters.loadurl));
}

使用ExternalInterface.call()在浏览器中调用console.log输出null,但在之前的版本中(此代码保持不变),它可以正常工作并输出URL。我可以在它们之间切换,看它在前面工作,然后更新到新的,它再次输出null。

这个资产的新版本中唯一的变化是我添加了一个符号和一些代码,以便在加载XML后将其添加到舞台中 - 但这并没有改变获取URL的代码来自页面的HTML。

我正在使用Flash CS5,它是一个ActionScript 3.0项目。

有谁能建议我哪里出错了?我花了很长时间把头发拉过这一头,所以任何帮助都会非常感激。我确实在某处读过这可以通过ExternalInterface完成 - 它会更适合这样的场景吗?如果由于某些原因我不能让它正常工作,它是否可行?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用ExternalInterface.call()来调用console.log但它现在有效但现在返回null,那么console.log的位置是否已移动?

答案 1 :(得分:0)

此处的解决方法是最终使用ExternalInterface.call。不幸的是,我无法弄清楚为什么没有正确传递给SWF的flashvars,尽管有很多关于HTML,SWFObject等的麻烦。