У меня есть минимальное приложение Adobe Air; это в основном s:SkinnableContainer
внутри mx:WindowedApplication
. У меня есть PNG-изображение размером 6000 x 9000 пикселей (~ 3,20 МБ), которое я хочу показать в SkinnableContainer
. Обратите внимание, что s:SkinnableContainer
является тегом из Flex 4 Beta3 (искровые компоненты).
Фон
Прежде чем я объясню проблему, немного предыстории этого приложения. Предполагается, что это приложение Air будет запускаться на стороне сервера и периодически проверять базу данных и читать разметку XML, которая описывает графическое содержимое (фон, дочерние изображения, дочерние текстовые узлы и т. Д.) SkinnableContainer
. Эта разметка фактически происходит из веб-приложения Flex, которое используется конечными пользователями для создания этого графического содержимого. Предполагается, что это приложение Air будет использовать версии изображений с действительно высоким разрешением, используемые в веб-приложении Flex, и воссоздать версию графического контента с высоким разрешением, созданного конечным пользователем в браузере. Приложение Air в конечном итоге запишет содержимое SkinnableContainer
в виде растрового изображения в файл.
Причина, по которой мы используем приложение Air, заключается в том, чтобы обеспечить 100% согласованность рендеринга между уменьшенной версией графического содержимого, отображаемой в браузере, и версией с высоким разрешением, создаваемой приложением Air.
Задача
Проблема, с которой я сталкиваюсь, заключается в том, что это изображение размером 3,20 МБ не отображается, если оно установлено в качестве источника s:Skin
, примененного к SkinnableContainer
. Если я использую уменьшенную версию изображения, которая имеет размеры 3000 x 4500 пикселей и 1,73 МБ, она будет отображаться в приложении. Я запускаю приложение в режиме отладки и не получаю никаких исключений при сбое большого изображения. Детские графические элементы SkinnableContainer
отображаются в обоих случаях в порядке.
Дополнительные замечания по реализации:
- Источником обложки является URL-адрес изображения, в настоящее время
http://localhost/foo/bar.png
. Я могу получить доступ к изображению, просто нажав на него из Firefox.
- Я установил источник следующим образом:
BitmapImage([get the skin].backgroundImage).source = "http://localhost/foo/bar.png"
;
Есть ли ограничение памяти, о котором я должен знать, которое обеспечивается Air? Это ошибка в одном из компонентов искры? Почему я не получаю никаких исключений? Самое главное, как мне это исправить?