我通过“swfobject.embedSWF()”
加载了SWF我使用Javascript的方法通过Flash API传递调用:http://developer.longtailvideo.com/trac/wiki/Player4Api#Sendingevents
call.player.sendEvent('LOAD', theFile)
通过GET使用XMLHttpRequest()调用PHP脚本,我得到一个文件URL:
http://xx.yy.com/protected/5dde98716ad8f31127ab560d94f96b87/4cbabea0/test.mp4
在我的浏览器中键入URL会启动该文件,但将该变量传递给sendEvent()调用则不会执行任何操作。为什么呢?
var response = http.responseText;
loadFile(response);
player.sendEvent('PLAY');
有什么明显的事我做错了吗? :/
感谢。
EDIT1:解决方案
我已经生成了正确加载和播放的网址,不仅仅是返回带有XMLHttpRequest()
的视频网址,而是返回一个带有必要参数的实际xml文件,以便与我正在使用的某些模块一起使用。 / p>
<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文件的响应吗? :/
答案 0 :(得分:1)
文件未加载可能是因为Flash中存在跨域限制。
我假设加载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
答案 1 :(得分:0)
在AS3中,您必须使用Sound类才能播放声音。您的声音实例需要通过URLRequest对象加载URL,以便播放声音。