我正在嘗試設置一個XML文件的路徑,在本地或在服務器上運行時這個路徑有所不同。ActionScript 3:如何從URL獲取主機名?
如何確定Flash是否在本地運行? (我想,以檢查是否URL包含「http://localhost」但你怎麼窗口URL?)
在此先感謝
我正在嘗試設置一個XML文件的路徑,在本地或在服務器上運行時這個路徑有所不同。ActionScript 3:如何從URL獲取主機名?
如何確定Flash是否在本地運行? (我想,以檢查是否URL包含「http://localhost」但你怎麼窗口URL?)
在此先感謝
mokee是正確的,因爲您需要指定一個相對路徑來在本地運行時訪問您的XML。你也應該在服務器上的某處匹配這個文件夾結構。但是,通常需要在此相對路徑前附加不同的基本路徑以指向這些文件夾的特定版本。例如,我們經常在我們的代理處有幾個不同的環境。 dev構建,測試服務器,不同的現場環境。您不希望對這些代碼進行硬編碼,您需要通過某種方式來確定實際使用的是哪一種。
,要解決這個問題通常是一個基本路徑爲FlashVar
通過在有關如何將Flash變量傳遞到您的SWF解決方案
http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html
設置看一看一個flash var指向服務器上的basePath。類似於
FlashVars="basePath=http://www.yourdomain.com/flash"
然後在actionscript中,您可以檢查是否存在此basePath。如果沒有,那麼你知道你在本地運行,所以你只使用你設置的本地工作的相對路徑。如果存在basePath,則將其前綴添加到相對路徑的前面,並使用此URL加載xml。
這是非常普遍的做法,工作得很好。
您可以通過外部API要求外窗(容器)此信息
if (flash.external.available) // An external window is not always available
{
var win:* = flash.external.call("window.location"); // evaluate window.location
// depending on browser there are several properties like 'host' you can use
// to get the actual hostname
// e.g. win.host == "localhost"
}
如果上述方法不起作用,您需要創建一個用於從JavaScript返回window.location對象的包裝函數。請注意,win對象上可用的屬性完全由瀏覽器設置,並因瀏覽器而異。這也意味着,如果您在瀏覽器環境之外運行由Flash播放器託管的電影,您將得到的Flash播放器不會了解window.location屬性,但在調試時部署電影時可以使用此功能)
點擊這裏瞭解更多信息
的路徑設置爲你的XML絕對相對: '/temp/data.xml'。像這樣,它將在'http://yourhost.com/temp/data.xml'處搜索XML。
如果它被設置爲'temp/data.xml',它會通過搜索它相對於SWF。
如果你很高興並且你知道它,data.xml。
如果您的應用程序是Flex應用程序,則可以通過應用程序對象的url
屬性檢索主SWF文件的URL。這可以從控制器樹中的任何位置通過parentApplication.url
訪問,或者如果對象不是控制器樹的一部分Application.application.url
。
對於普通的AS3項目,您需要訪問主精靈的loaderInfo
屬性,例如_root.loaderInfo.url
會給出相同的信息。
對不起,這不是一個Flex應用程序 – Aximili 2009-02-16 22:45:08
完美!謝謝James – Aximili 2009-02-16 22:44:34