2013-04-22 122 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