|
|
|||||
Регистрация: Apr 2012
Сообщений: 44
|
Иногда не отображаются изображения
Здравствуйте.
У меня в приложении есть 2 области: рабочая и список с превьюшками изображений. Изображение описывается классом (все лишнее вырезано): public class PrintItem { [Bindable] /** * The URL of the preview item image. */ public var source:Object = ""; } Загрузка ByteArray происходит следующим образом: private function requestPreviews():void { for each (var item:PrintItem in model.product.items) { // we create new loader for every preview file, cause we can't predict their number var request:URLRequest = new URLRequest("url для загрузки"); request.data = new URLVariables("file=" + item.source); request.method = URLRequestMethod.GET; var loader:ImageLoader = new ImageLoader(item.source as String); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, requestPreviewFileComplete); loader.load(request); } } private function requestPreviewFileComplete(event:Event):void { for each (var item:PrintItem in model.product.items) { if(item.source.toString() == (event.target as ImageLoader).filePath) item.source = event.target.data as ByteArray; } } , item - PrintItem. Проблема заключается в следующем: иногда вместо изображения не отображаются (висит картинка, как при недоступном изображении). Можно было бы подумать на проблемы с сетью, но бывает, что изображения отображаются в списке превьюшек, но в рабочей области их по-прежнему нет! Когда поле source в классе PrintItem было объектом класса String и содержала прямую ссылку на файл изображения, таких проблем не было. Может быть есть какие-то подводные камни при работе стандартного компонента Image с ByteArray или при приведении Object к ByteArray? Последний раз редактировалось Sonet; 20.05.2013 в 15:38. |
|
|||||
Можно же ведь кодировать source в ByteArray с помощью свойств writeUTFBytes и декодировать readUTFBytes, даже декодировать не нужно, экземпляр Image при ссылке на свойство source проглотит ByteArray и отобразит. Также можно конвертировать в объекты writeObject и readObject.
|
|
|||||
Регистрация: Apr 2012
Сообщений: 44
|
Сделал поле source объектом ByteArray. Т.е. приведение типов теперь быть не должно. Надеюсь поможет.
Цитата:
|
|
|||||
Регистрация: Apr 2012
Сообщений: 44
|
Так и делаю (прим. задаю явно). Просто этот момент мне не слишком понятен. Однако насколько я понимаю, этот файл (crossdomain.xml) все равно загружается? Если это происходит асинхронно, то возможно, что изображения грузятся приложением раньше, чем crossdomain.xml - отсюда и сбой.
|
|
|||||
мне кажется тут закралась мелкая ошибка, а именно в объекте source класса PrintItem, т.к. в попытке получить строку у объекта item.source.toString() вы получите вывод типа объекта, а не его содержание. Поэтому условие будет не выполнено. Обращайтесь к свойству объекта. И потом, этот же объект используется по другому назначению, принимая ByteArray.
|
|
|||||
Регистрация: Apr 2012
Сообщений: 44
|
Цитата:
|
Часовой пояс GMT +4, время: 19:36. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|