Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2009, 20:57
exeron вне форума Посмотреть профиль Отправить личное сообщение для exeron Найти все сообщения от exeron
  № 1  
Ответить с цитированием
exeron

Регистрация: Mar 2009
Сообщений: 8
По умолчанию Bitmap -> ByteArray -> Bitmap

Подскажите, пожалуйста, как выполнить данное преобразование.
Пробовал:
Код AS3:
byteArrayToBitmapData(ldr.content.loaderInfo.bytes);
 
private function byteArrayToBitmapData(ba:ByteArray):void {
         loader = new Loader();  
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData);
         loader.loadBytes(ba);
       }
       private function getBitmapData(event:Event):void {
                       loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, getBitmapData);
     myBmp = event.target.content; <<< Здесь возникает ошибка
       }

Старый 19.03.2009, 21:04
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
А если с кастингом?

Старый 19.03.2009, 21:08
exeron вне форума Посмотреть профиль Отправить личное сообщение для exeron Найти все сообщения от exeron
  № 3  
Ответить с цитированием
exeron

Регистрация: Mar 2009
Сообщений: 8
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
А если с кастингом?
Если имеется ввиду:
Код AS3:
 myBmp = Bitmap(event.target.content);
То результат тот же (.

Старый 19.03.2009, 23:15
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 4  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
смотри внимательнее, target это contentLoaderInfo, а не loader
в твоем случае надо обращаться к содержимому так: event.target.loader.content - но про кастинг лучше не забывай

Старый 20.03.2009, 07:19
exeron вне форума Посмотреть профиль Отправить личное сообщение для exeron Найти все сообщения от exeron
  № 5  
Ответить с цитированием
exeron

Регистрация: Mar 2009
Сообщений: 8
1. Не работает.
2. Если прогнать под отладчиком - то event.target.content это один в один event.target.loader.content
Может ошибка в том как я получаю ByteArray?
Код AS3:
private function completeIMG(event:Event):void {
  .....
  ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeIMG);
 // byteArrayToBitmapData(ldr.content.loaderInfo.bytes);  <<
  myBmp = event.target.content; << если так все ок
}

Старый 20.03.2009, 09:33
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Может ошибка в том как я получаю ByteArray?
похоже, что так
затрудняюсь сказать почему, но когда скармливаем лоадеру loaderInfo.bytes, то получаем в его content'е MovieClip
а если загрузить картинку как бинарник, то все нормально - имеем Bitmap
Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.ByteArray;
 
	public class Main extends Sprite 
	{
		private var loader:Loader = new Loader();
		private var loader1:Loader = new Loader();
		private var urlLoader:URLLoader = new URLLoader();
		public function Main():void 
		{
 
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeIMG);
			loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, completeDecode);
			urlLoader.addEventListener(Event.COMPLETE, completeData);
			urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			//loader.load(new URLRequest("face0.jpg"));//то, что происходит у автора
			urlLoader.load(new URLRequest("face0.jpg"));//работающий вариант
		}
 
		private function completeData(evnt:Event):void 
		{
			var ba:ByteArray = urlLoader.data;
			loader1.loadBytes(ba);
		}
 
		private function completeIMG(evnt:Event):void 
		{
			var ba:ByteArray = loader.content.loaderInfo.bytes;
			loader1.loadBytes(ba);
		}
 
		private function completeDecode(evnt:Event):void 
		{
			var myBmp : DisplayObject = loader1.content as DisplayObject;
			trace( "myBmp : " + myBmp );
			//[object MovieClip] если отдавать loaderInfo.bytes;
			//[object Bitmap] если отдавать urlLoader.data;
		}
 
	}
 
}
ps.
к слову сказать: в AVM1 jpg, загруженный с помощью MovieClipLoader.loadClip или MovieClip.load, тоже никакого отношения к графике уже не имел


Последний раз редактировалось silin; 20.03.2009 в 09:50.
Старый 20.03.2009, 09:58
exeron вне форума Посмотреть профиль Отправить личное сообщение для exeron Найти все сообщения от exeron
  № 7  
Ответить с цитированием
exeron

Регистрация: Mar 2009
Сообщений: 8
В принципе, для решения моей задачи - приемлемый вариант. Спасибо, silin.

Старый 20.03.2009, 11:30
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 8  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
Цитата:
Сообщение от exeron Посмотреть сообщение
1. Не работает.
2. Если прогнать под отладчиком - то event.target.content это один в один event.target.loader.content
Ага, ступил.

Цитата:
Сообщение от silin Посмотреть сообщение
затрудняюсь сказать почему, но когда скармливаем лоадеру loaderInfo.bytes, то получаем в его content'е MovieClip
Забавно . При чем этот MovieClip содержит единственного ребенка, тот самый искомый Bitmap.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.