2012-08-08 69 views
0

希望有人可以在這裏提供幫助,或多或少地尋找a)相對路徑的解決方案,或者b)瞭解另一種加載資產的方法。flex中的多版本子應用程序資產路徑4

我們有一個獨立的Web應用程序使用SDK 4.1,並在其相關資產文件夾中查看要加載的所有圖像和外部swfs。

在服務器上,這是資產目錄的絕對路徑:

/ApplicationRoot/versionFldr/controls/assets/* 

應用程序使用在加載的資產..所有病例的相對路徑,這不斷將被添加到和更新我們應用程序的高級版本。

因此,在本質上,應用程序正在尋找:

assets/* 

現在轉移到新的應用程序,讓我們把它稱爲「ParentApp」和上面的應用「ChildApp」。

父應用程序是不是ChildApp不同的服務器目錄

/ParentApp/version/controls/ParentApp.swf 
/ChildApp/version/controls/ChildApp.swf 

現在,當ChildApp加載到ParentApp,它假定它是在同一目錄下,它一直是在,所以它看起來資產/ *和不能找到它們,因爲

/ParentApp/version/controls/assets/* != /ChildApp/version/controls/assets/* 

我需要找到一個解決方案,具有ChildApp看在所有加載的資源的絕對路徑,當它是ParentApp的一個孩子,有它在相對路徑看向自己,當它是獨立的。

我的注意事項是圖像被加載到各種控件,緩存,甚至mx:文本字段(帶有標籤的HTML文本)。我試圖避免全局替換應用程序中的所有路徑鏈接,並且在爲應用程序創建新資產時必須創建新的編碼過程。 ChildApp正在生產中,並且必須保留在4.1 SDK上。

ParentApp是新的,具有更多的靈活性。

我已經嘗試了childApp中的源路徑和庫文件路徑編譯器選項,但是這導致編譯錯誤,我一直無法繼續。

預先感謝您的任何見解和幫助! -AJ

回答

0

我會通過在子應用程序中有一個「baseURL」變量來解決這個問題。給它一個默認值,以便你可以形成你正在使用的通常的相對URL:var baseURL:String =「/ assets /」;

不幸的是,你就必須修改孩子的應用程序的每個資產路徑,該路徑的資產是一樣的東西:baseURL + assetFileName

當孩子應用程序加載到父應用程序,你再給這個baseURL變量一個非相對路徑。理想情況下,您在該流程的早期就會這樣做,在子應用嘗試加載任何資產之前。

+0

我已經做了這個實際上處理模塊加載,它完美的作品。我通過flashVars將ParentApp的「版本」值傳遞給ChildApp,一旦ChildApp初始化,它將使用此值構建絕對路徑,以正確加載模塊。 我在使用這個變量時遇到的問題是需要添加前綴的資產和未知資產的_amount_。我們在ChildApp中擁有相當動態的內容,即使在我們的開發辦公室之外,許多用戶也可以訪問修改內容。如果內容包含相對路徑,則會出現IO錯誤。 – notDefault 2012-08-08 17:13:42

+0

**已解決**:我們在ParentApp的資產/文件夾中的服務器上創建了一個符號鏈接,以指向ChildApp的資產/文件夾。 – notDefault 2012-08-10 17:22:05

相關問題