无法在Flash中使用ExternalInterface工作

时间:2009-05-14 13:38:13

标签: flash actionscript externalinterface

闪光灯非常新颖。我正在使用XSPF音乐播放器(这里发现的超薄版本(http://musicplayer.sourceforge.net/),用AS2编写)来播放网站上的mp3列表。每次加载曲目时我都需要进行javascript调用。我试图通过ExternalInterface这样做,但到目前为止没有运气。这是我的设置:我在Linux机器上编写网站,该机器也包含测试服务器,但在Windows中编辑闪存。我正在使用firefox 3.0.10在同一个linux机器上测试该站点。 html和actionscript发布在这里(http://pastebin.com/f36b1da0e)。有人看到我的代码有什么问题吗?知道它为什么不起作用吗?我觉得这是我的基本设置......

谢谢, 丹

1 个答案:

答案 0 :(得分:0)

我已经快速查看了您的代码,看起来还可以(无论如何都是actionscript)。 我要说的是尝试不同的嵌入swf的方法。年龄前(所以我不记得所有的细节),但我用不同的浏览器测试外部接口,有时它可以在IE中工作,但不是Firefox,如果我尝试了一种不同的嵌入swf的方法,它将工作在firefox但不是IE或只是IE 6而不是7!

非常讨厌。无论如何,我发现当时在两个主要浏览器中都有效的唯一方法(chrome已经出局)是使用在发布应用时从flexbuilder创建的HTML。我当然要修改它(因为我们使用cocoon& xsl)但是它有效。

(从那以后我觉得swfobject已经改进了,如果我是你,我也可以尝试一下)

我已经在http://pastebin.com/f79b5b3f3上发布了flexbuilder的HTML模板。它需要AC_OETags.js文件(http://pastebin.com/f3937a336)和playerProductInstall.swf(您可能需要下载flexbuilder才能获得此功能)。


下面的评论代码

<mx:HTTPService id="mySerivceCall" 
    url="{'myPHPFile.php'}"
    result="resultHandler(event)" 
    fault="faulthandler(event)"
    showBusyCursor="false" 
    resultFormat="e4x"> 
    <mx:request>
        <time>{new Date().getTime()}</time>
    </mx:request>
</mx:HTTPService>

我总是将时间添加到httpservice,确保它不会被缓存(哪个IE非常糟糕)。只需将任何其他参数放入请求部分,结果格式就会告诉flex,结果是在e4x中格式化XML,这使得处理XML非常直接。