0

我通过“swfobject.embedSWF()”加载了一个 SWF

我使用 Javascript 的方法通过 flash API 传递调用:http: //developer.longtailvideo.com/trac/wiki/Player4Api#Sendingevents

call.player.sendEvent('LOAD', theFile)

通过 GET 对 PHP 脚本使用 XMLHttpRequest() 调用,我得到一个文件 url:

http://xx.yy.com/protected/5dde98716ad8f31127ab560d94f96b87/4cbabea0/test.mp4

在我的浏览器中键入 URL 会启动文件,但将变量传递给 sendEvent() 调用什么也不做。为什么?

var response = http.responseText;    
loadFile(response);
player.sendEvent('PLAY');

有什么明显的我做错了吗?:/

谢谢。

EDIT1:解决方案

我已经得到了生成的 url 来正确加载和播放,不仅返回视频 url,XMLHttpRequest()而且返回一个带有必要参数的实际 xml 文件,以使用我正在使用的一些模块。

<rss version="2.0" 
    xmlns:media="http://search.yahoo.com/mrss/" 
    xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
    <channel>
        <title>Example media RSS playlist</title>
        <item>
            <title>Lighttpd Video</title>
            <media:content url="http://xx.yy.com/protected/91aa7dfa25596a7d59c3b9403fc4773f/4cbb35d6/test.mp4" />
            <jwplayer:provider>http</jwplayer:provider>
            <jwplayer:http.startparam>start</jwplayer:http.startparam>
        </item>
    </channel>
</rss>

我想知道这是否像现在看起来那样明显。只能XMLHTTPRequest()返回格式为 xml 文件的响应吗?:/

4

2 回答 2

1

该文件未加载可能是因为闪存中的跨域限制。

我假设加载 flash swf 的域与加载音频文件的域不同。

要覆盖此限制,您需要将 crossdomain.xml 文件放在托管声音文件的服务器的根目录中。

<?xml version="1.0"?>
<!-- http://www.youtube.com/crossdomain.xml -->
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

这个文件应该放在你的web服务器的根目录下,即http://xx.yy.com/crossdomain.xml

于 2010-10-17T11:17:41.870 回答
0

在 AS3 中,您必须使用 Sound 类才能播放声音。您的声音实例需要通过 URLRequest 对象加载 URL 才能播放声音。

于 2010-10-17T10:54:20.610 回答