·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]如何处理让播放器加载XML等文件时支持相对路径(代码示例)

时间:2012-09-03 10:16blueidea
[AS3]如何处理让播放器加载XML等文件时支持相对路径,想让你的FLASH播放器加载XML等文件时支持相对路径吗?

  有人说“某某论坛不支持播放器加载XML文件”,
  其实,几乎所有的DISCUZ论坛和QQ空间都“不支持”
  FLASH播放器加载用相对路径格式书写的XML等文件。

  原因可能是自动禁止了以下两个参数造成的:
  invokeURLs="false"
  allowNetworking="internal"

  想让你的FLASH播放器加载XML等文件时支持相对路径吗?
  使用我写的deurl("相对路径")函数吧。
  它还支持向上回逆目录哦(../../)

  1. //通用代码段,获取播放器自身所在的路径 + 补全URL路径字符串以支持相对路径  
  2. var playerrealurl;  
  3. var playervarsstr;  
  4. var playerrootpath;  
  5. //AS2:  
  6. var rootfullurlstr=_root._url;  
  7. //AS3:  
  8. loaderInfo.url?rootfullurlstr=loaderInfo.url:null;  
  9. rootfullurlstr.indexOf("?", 0)>=0 ? playerrealurl=rootfullurlstr.slice(0, rootfullurlstr.indexOf("?", 0)) : playerrealurl=rootfullurlstr;  
  10. rootfullurlstr.indexOf("?", 0)>=0 ? playervarsstr=rootfullurlstr.slice(rootfullurlstr.indexOf("?", 0)+1) : playervarsstr="";  
  11. playerrootpath = rootfullurlstr.slice(0, rootfullurlstr.indexOf("?", 0));  
  12. playerrealurl.lastIndexOf("/", playerrealurl.length)>=0 ? playerrootpath=playerrealurl.slice(0, playerrealurl.lastIndexOf("/", playerrealurl.length)) : null;  
  13. function deurl(theurl) {  
  14. cur_playerrootpath = playerrootpath;  
  15. if (theurl.toLowerCase().indexOf("http:")<0 && theurl.toLowerCase().indexOf("https:")<0 && theurl.toLowerCase().indexOf("ftp:")<0 && theurl.toLowerCase().indexOf("file:")<0) {  
  16. while (theurl.slice(0, 3) == "../") {  
  17. cur_playerrootpath.lastIndexOf("/", cur_playerrootpath.length)>=0 ? cur_playerrootpathcur_playerrootpath=cur_playerrootpath.slice(0, cur_playerrootpath.lastIndexOf("/", cur_playerrootpath.length)) : null;  
  18. theurltheurl = theurl.slice(3);  
  19. }  
  20. theurl = cur_playerrootpath+"/"+theurl;  
  21. }  
  22. return theurl;  
  23. }  
  24. trace(deurl("xml.xml")) 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器