Показать сообщение отдельно
Старый 09.02.2011, 17:48
TihelpER вне форума Посмотреть профиль Отправить личное сообщение для TihelpER Найти все сообщения от TihelpER
  № 1  
Ответить с цитированием
TihelpER
 
Аватар для TihelpER

Регистрация: May 2007
Адрес: Moskow
Сообщений: 47
Отправить сообщение для TihelpER с помощью ICQ
По умолчанию Загруженное через loadBytes не отображается

Здравствуйте.

Запрашиваю у сервера изображение POST-запросом, получаю в ответ байтовый массив закодированный в Base64. По завершению загрузки преобразовываю содержимое в ByteArray и пытаюсь загрузить через метод loadBytes() экземпляра Loader что бы потом отобразить на сцене.

По завершению загрузки объект доступен, имеет правильные значения width, height, но не виден.

Код AS3:
contentLoader = new Loader()
addChild(contentLoader)
contentLoader.loadBytes(requestObject.data) // Там у объекта полученные байты
contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, bytesLoadComplete)
// в bytesLoadComplete(e:Event) есть корректные размеры загруженного изображения, 
// stage у contentLoader  и пр. — выглядит как здоровый объект
Пробовал, начитавшись хэлпа:
— добавлять LoaderContext с checkPolicyFile = fasle — не помогает;
— добавлять маску объекту Loader;
— принуждать к загрузке crossdomain.xml, в котором <allow-access-from domain="*" />
— ловить ошибки SecurityError и IllegalOperationError при загрузе

Загрузка с этого же сервера через load(new URLRequest(_link)) по абсолютной ссылке на файл проходит отлично: и изображения и swf грузятся, отображаются.

В чём я надурачил?

Добавлено через 3 часа 8 минут
Как выяснилось ко мне приходила кривая Base64-строка: порой с неожиданным завершением, порой с пробелом посреди строки. От того и правильное определение типа, размеров, но невозможность отобразить.

Мелкие изображения (до 5х5 пксл) передаются на ура.

Будем искать ошибку в запросе. Если есть идеи — буду рад услышать.


Последний раз редактировалось TihelpER; 09.02.2011 в 20:56. Причина: update