我有一个最低限度的 Adobe Air 应用程序;它基本上是一个s:SkinnableContainer
内部的mx:WindowedApplication
。我有一个 6000 x 9000 像素的 PNG 图像(~3.20MB),我想在SkinnableContainer
. 请注意,这s:SkinnableContainer
是来自 Flex 4 Beta3(火花组件)的标签。
背景
在我解释这个问题之前,先介绍一下这个应用程序的背景知识。这个 Air 应用程序应该在服务器端运行,并定期检查数据库并读取描述SkinnableContainer
. 此标记实际上来自最终用户用来创建此图形内容的 Flex Web 应用程序。这个 Air 应用程序应该做的是使用 Flex Web 应用程序中使用的真正高分辨率版本的图像,并重新创建最终用户在浏览器中创建的图形内容的高分辨率版本。Air 应用程序最终会将 的内容SkinnableContainer
作为位图写入文件。
我们使用 Air 应用程序的原因是为了确保在浏览器上呈现的较小版本的图形内容与 Air 应用程序将生成的高分辨率版本之间呈现 100% 的一致性。
问题
我面临的问题是这个 3.20MB 的图像在设置为s:Skin
应用到SkinnableContainer
. 如果我使用较小版本的图像,尺寸为 3000 x 4500 像素,大小为 1.73MB,则会在应用程序中呈现。我在调试模式下运行应用程序,当大图像失败时我没有得到任何异常。在这两种情况下,子图形元素都SkinnableContainer
可以很好地呈现。
更多实施说明:
- 皮肤的来源是图像的 URL,目前,
http://localhost/foo/bar.png
. 我可以通过从 Firefox 中点击它来访问图像。 - 我将来源设置如下
BitmapImage([get the skin].backgroundImage).source = "http://localhost/foo/bar.png"
:
是否有我应该知道的由 Air 强制执行的内存限制?这是火花组件之一中的错误吗?为什么我没有任何异常?最重要的是,我该如何解决这个问题?