如果我有一个 SWF 和一个 XML 文件位于同一个文件夹中,有没有办法让加载程序使用 SWF 的位置作为其加载外部文件的起点(而不是 SWF 在其上的 HTML 文件)播放)?我们正在复制一组网站,其中一些路径具有唯一的页面代码,但如果 SWF 只在自己的文件夹中查找,它们就可以正常运行。:)
谢谢!克里斯
如果我有一个 SWF 和一个 XML 文件位于同一个文件夹中,有没有办法让加载程序使用 SWF 的位置作为其加载外部文件的起点(而不是 SWF 在其上的 HTML 文件)播放)?我们正在复制一组网站,其中一些路径具有唯一的页面代码,但如果 SWF 只在自己的文件夹中查找,它们就可以正常运行。:)
谢谢!克里斯
可以试试这个。
var base:String = unescape( LoaderInfo( this.root.loaderInfo ).url ); // url of SWF
// now we need to remove the SWF name from the url
var lastSlash:uint = Math.max( this.base.lastIndexOf( "\\" ), this.base.lastIndexOf( "/" ) );
return( base.substr( 0, lastSlash + 1 ) );
这将获取 SWF 的 url,遍历它并找到最后一个“\”或“/”以确定 swf 文件名的开始位置,并将基数设置为 SWF 的路径。
然后将所有 relative URLRequest
s 从
var url:URLRequest = new URLRequest( "assets/blah/blah/img.png" );
至
var url:URLRequest = new URLRequest( base + "assets/blah/blah/img.png" );
这将是我将添加为您的应用程序类的静态属性的内容,以便您只访问一个字符串而不进行任何强制转换或 unicode 转义或任何重复的操作。只需在启动时运行一次并将其作为静态变量抛出,因为它永远不会改变。
(我确实对此进行了测试,并且至少在本地可以正常工作。但是,我看不出它与来自网络的 URL 的行为有何不同的原因)