2013-04-22 83 views
0

如果我有一个SWF文件和一个XML文件位于同一文件夹中,是否有方法让加载程序使用SWF的位置作为加载外部文件的起点(而不是HTML SWF播放的文件)?我们正在复制一组网站,其中一些路径具有唯一的页面代码,但是如果SWF只是查看自己的文件夹,它们将运行良好。 :)AS3 SWF加载外部文件;更改默认位置

谢谢! Chris

回答

1

可以试试这个。

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的路径。

然后从

var url:URLRequest = new URLRequest("assets/blah/blah/img.png"); 

改变所有相关URLRequest s到

var url:URLRequest = new URLRequest(base + "assets/blah/blah/img.png"); 

这将是我会添加为您的应用程序类的静态属性,使你只访问一个字符串并且不会进行任何铸造或unicode转义或任何重复。只需在启动时运行一次,并将其作为静态变量抛出,因为它永远不会改变。

(我没有测试这和它的作品,至少在本地。我不明白为什么它会表现得什么不同从网网址,不过)

+2

这将是更有效地使用lastIndexOf()代替循环遍历所有字符(向前!)。 – 2013-04-23 00:10:31

+0

谢谢启示录,我会让你知道它是怎么回事! – 2013-04-23 00:12:52

+0

@AmyBlankenship我从来没有听说过lastIndexOf()。我会立即更新我的答案以利用它。谢谢你指出这一点。刚刚意识到我也应该向后循环。所以谢谢你指出一个。非常低效(尽管如果只运行一次,不是一个问题的根源) – 2013-04-23 00:13:38