【问题标题】:multiversioned sub application asset paths in flex 4flex 4 中的多版本子应用程序资产路径
【发布时间】:2012-08-05 17:58:09
【问题描述】:

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

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

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

/ApplicationRoot/versionFldr/controls/assets/*

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

所以,本质上,该应用正在寻找:

assets/*

现在转到 NEW 应用程序,我们将其称为“ParentApp”,将上述应用程序称为“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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我这样做实际上是为了处理模块加载,它工作得很好。我通过 flashVars 将 ParentApp 的“版本”值传递给 ChildApp,一旦 ChildApp 初始化,它就会使用它来构建绝对路径,以便正确加载模块。我在使用这个变量时遇到的问题是资产的数量和需要作为前缀的未知资产。我们在 ChildApp 中有相当动态的内容,许多用户,甚至在我们的开发办公室之外也可以访问修改内容。如果内容包含相对路径,则会出现 IO 错误。
    • 已解决:我们在服务器上的 ParentApp 的 assets/ 文件夹中创建了一个符号链接,以指向 ChildApp 的 assets/ 文件夹。
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多