0

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

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

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

/ApplicationRoot/versionFldr/controls/assets/*

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

因此,本质上,该应用程序正在寻找:

assets/*

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

Parent App 与 ChildApp 位于不同的服务器目录中

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

现在,当 ChildApp 加载到 ParentApp 中时,它假定它位于它一直所在的同一目录中。因此,它查找 assets/* 并找不到它们,因为

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

我需要找到一个解决方案,让 ChildApp 在它是 ParentApp 的孩子时查看所有加载资产的绝对路径,并让它在独立时查看相对于自身的路径。

我需要注意的是,图像被加载到各种控件、缓存甚至 mx:Text 字段(带有标签的 html 文本)中。我试图避免必须全局替换应用程序中的所有路径链接,并且在为应用程序创建新资产时必须创建新的编码过程。ChildApp 正在生产中,必须保留在 4.1 SDK 上。

ParentApp 是新的并且具有更大的灵活性。

我在 childApp 中尝试了 -source-path 和 -library-path 编译器选项,但这会导致编译错误,我无法继续。

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

4

1 回答 1

0

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

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

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

于 2012-08-08T17:11:14.800 回答