2008-10-20 33 views
4

我有一個大的(700kb)Flex .swf文件,代表站點的主文件。加載Flex資源相對於服務器根,而不是.swf位置

對於性能測試,我想嘗試將其移到Amazon S3主機(我已經完成了某些視頻和大型文件)。

我繼續做了,並更新了html頁面以引用遠程.swf。

事實證明,Flash將加載相對於訪問資源的.swf文件的任何資源 - 不管html頁面的根目錄是什麼。所以我的資源現在正從遠程站點加載(它們不存在的地方)。

有兩個明顯的事情,我可以這樣做: *複製我的所有資源遠程(沒有爲此做好準備,因爲我剛纔測試) *中的某種抽象層添加到每一個.swf文件訪問URL衍生出一條新路。

我真的想輕彈一個開關,並說'加載所有相對於[原始服務器]'。

這樣的事情是否存在或我堅持從遠程機器加載everythin,除非我完全限定每條路徑?

我想避免任何「哈克」,如:子類圖像和黑客的路徑有

回答

0

你可以試着指定你的SWF的嵌入/對象標籤的base參數。理論上它定義了將用於解析加載相對路徑的基本路徑,但我不知道如果base值指向與SWF所在的位置不同的服務器,它是否會工作。

查看關於嵌入/對象參數here的文檔。向下滾動到中間的「base」。

如果這不起作用,我見過的另一件事就是通過flashvars傳遞一個自定義基本路徑。然後在SWF內部,檢查是否定義了該基本路徑,如果是,則在加載前將其預先加入相對URL。

+0

我試着添加'base',但它似乎不起作用 - 至少對於SWFLoader而言,它並不是 – Simon 2008-10-23 06:32:15

1

附加您的網址前的斜線,這應加載相對於域,而不是當前文件夾:

foo.load('/like/this/image.jpg') 

這是一個有點快速和骯髒的,通過查詢字符串餵養「相對」 URL(or the base parameter )會更加靈活。

+0

這是行不通的。他說他的SWF與HTML不在同一臺服務器上,而且他希望相對於HTML所在的服務器加載。此外,這將要求他改變他的所有負荷說明,這是他要求如何避免的。 – fenomas 2008-10-22 09:52:09

相關問題