【问题标题】:Flex Image Source Server Side Flash and AirFlex 图像源服务器端 Flash 和 Air
【发布时间】:2012-07-09 08:24:52
【问题描述】:

我正在尝试在 air 运行时而不是 flash 运行时中运行我的 flex 应用程序。除了图像之外,它似乎工作得很好。 Adobe Air 运行时会尝试加载它们。有没有办法将图像的根地址更改为服务器端?如果可能的话,我想对 flash 运行时和 air 运行时使用相同的代码 ..“single codebase ;-)”

var icon:Image = new Image();
icon.source = "images/test.png";

问候 西里尔

【问题讨论】:

  • 在打包 AIR 应用程序时是否包含资产?
  • 不.. 我希望我可以使用部署在服务器端的资产。我尝试将它们包含在项目中,然后它就可以工作了。但是一旦我使用 flashbuilder 导出工具创建了 exe,我就会得到一个异常......以及一个未定义的异常。我可以根据这个错误找到任何日志文件。
  • 大约有 10000 张图片
  • 如果您使用服务器上的图像,这意味着当应用程序没有互联网连接时它们不会显示。如果图像不太可能改变,我看不出你为什么不打包它们。
  • 如果你的应用使用了这么多图片,我猜它们足够小,可以嵌入它们。由于不可避免的 ping,即使连接良好,它们也需要很长时间才能加载。

标签: apache-flex air


【解决方案1】:

通常我会简单地将资产打包到 AIR 应用程序中。这样,相对路径在 Web 应用程序和桌面应用程序中都有效。但是,由于您在 cmets 中指出我们正在谈论 10000 张图像,因此您必须找到另一个解决方案。

您需要一个可针对每种类型的项目进行配置的变量。访问图像的最终代码应如下所示:

var icon:Image = new Image();
icon.source = rootUrl + "/images/test.png";

对于网络应用程序,rootUrl 可能是 "",对于桌面应用程序可能是 "http://www.mydomain.com"。或者在这两种情况下它都可能是绝对路径。没关系:我们不想将该 URL 硬编码到我们的应用程序中。

创建一个包含rootUrl 值的 .properties 文件(或 XML 或 JSON;您喜欢的任何配置文件)并将其读入您的应用程序模型。此配置文件可以打包到 AIR 应用程序中。

.properties 文件将如下所示:

#myapp.properties
rootUrl=http://www.mydomain.com

为了读取文件,您可以使用 AIR 的文件流功能,但我建议您使用 URLLoader 以老式方式加载它:这样它就可以在网络中使用和桌面应用程序。

【讨论】:

  • 谢谢.. 刚刚成功了。 :) .. 我实现了一些缓存机制,所以它只加载一次。你知道这是否是一个已知问题.. 打包包含 10000 张图像的空气应用程序?
  • @CyrillZadra 对不起,不知道。您可以尝试在JIRA 中自行查找。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多