2012-08-08 36 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

相关问题