flex 4中的多版本子应用程序资产路径

时间:2012-08-08 15:12:48

标签: flex relative-path assets absolute-path subapplication

希望有人可以在这里提供帮助,或多或少地寻找a)相对路径的解决方案或b)深入了解另一种加载资产的方法。

我们有一个使用SDK 4.1的独立Web应用程序,并在其相对资源文件夹中查找要加载的所有图像和外部swfs。

在服务器上,这是资产目录的绝对路径:

/ApplicationRoot/versionFldr/controls/assets/*

应用程序在加载资产的所有情况下都使用相对路径..随着我们推进应用程序的版本,这将不断添加和更新。

所以,从本质上讲,应用程序正在寻找:

assets/*

现在转发到新应用程序,我们称之为“ParentApp”和上面的应用程序“ChildApp”。

父App与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中尝试过-source-path和-library-path编译器选项,但这会导致编译错误而我无法继续。

提前感谢您的任何见解和帮助! -AJ

1 个答案:

答案 0 :(得分:0)

我会通过" baseURL"来解决这个问题。子应用程序中的变量。给它一个默认值,以便您可以形成您正在使用的常用相对URL:`var baseURL:String =" / assets /&#34 ;;

不幸的是,您必须修改子应用中的每个资产路径,以便资产的路径类似于:baseURL + assetFileName

当子应用程序加载到父应用程序时,您将为此baseURL变量提供非相对路径。理想情况下,在子应用程序尝试加载任何资产之前,您可以在此过程的早期执行此操作。