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

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

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

Регистрация: Nov 2009
Сообщений: 80
Question возврат битмапа после загрузки

Привет, пытаюсь написать простой класс загрузки внешних изображений. Не могу понять как реализовать возврат методом класса изображения после его загрузки. Вызов dno.getBitmap() сразу после обьявления класса не возвращает битмап, поскольку он не загружен...как правильно реализовать это, желательно чтобы затрагивать только LoaderImg.as
суть в том, чтобы класс LoaderImg вернул Bitmap

Сейчас это выглядит так:
main.as
Код AS3:
package {
 
	import flash.display.*;
	import flash.events.*;
	import flash.system.LoaderContext;
	import flash.net.URLRequest;
	import LoadImg;
 
	public class Main extends Sprite {
 
		public function Main():void {
			if (stage) {
				init();
			} else {
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		public function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			var dno:LoadImg = new LoadImg("https://www.google.com.ua/images/srpr/logo11w.png");
			stage.addChild(dno.getBitmap());
		}
	}
}
LoaderImg.as
Код AS3:
package {
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.net.URLRequest;
 
	public class LoadImg {
 
		public var imgB:Bitmap;
 
		public function LoadImg(url:String):void {
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loader.load(new URLRequest(url));
		}
 
		private function onComplete (event:Event):void {
			var imgBD = event.target.content.bitmapData;
			this.imgB = new Bitmap(imgBD);
		}
 
		public function getBitmap():Bitmap {
			return this.imgB;
		}
	}
}


Последний раз редактировалось JekelSkaz; 29.01.2014 в 17:57.
Старый 29.01.2014, 17:54
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Наверно правильнее будет сделать как и в обычном лоадере, ждать события полной и успешной загрузки картинки и только потом добавлять на сцену.

Старый 29.01.2014, 17:57
JekelSkaz вне форума Посмотреть профиль Отправить личное сообщение для JekelSkaz Найти все сообщения от JekelSkaz
  № 3  
Ответить с цитированием
JekelSkaz

Регистрация: Nov 2009
Сообщений: 80
Цитата:
Сообщение от samana Посмотреть сообщение
Наверно правильнее будет сделать как и в обычном лоадере, ждать события полной и успешной загрузки картинки и только потом добавлять на сцену.
суть в том, чтобы класс LoaderImg вернул Bitmap
я могу передать stage и запихать в него изображение посде загрузки в самом классе LoaderImg, но это не то, что мне нужно

Старый 29.01.2014, 18:02
myakushka вне форума Посмотреть профиль Отправить личное сообщение для myakushka Найти все сообщения от myakushka
  № 4  
Ответить с цитированием
myakushka

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
он вернет вам Bitmap, когда закончит загрузку

Старый 29.01.2014, 18:03
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 5  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Код AS3:
package {
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.net.URLRequest;
 
	public class LoadImg {
 
		public var imgB:Bitmap;
 
		public function LoadImg(url:String):void {
			this.imgB = new Bitmap();
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loader.load(new URLRequest(url));
		}
 
		private function onComplete (event:Event):void {
			var imgBD = event.target.content.bitmapData;
			this.imgB.bitmapData = imgBD;
		}
 
		public function getBitmap():Bitmap {
			return this.imgB;
		}
	}
}
__________________
Будь проще.

Старый 29.01.2014, 18:12
JekelSkaz вне форума Посмотреть профиль Отправить личное сообщение для JekelSkaz Найти все сообщения от JekelSkaz
  № 6  
Ответить с цитированием
JekelSkaz

Регистрация: Nov 2009
Сообщений: 80
Цитата:
Сообщение от KBAC Посмотреть сообщение
Код AS3:
package {
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.net.URLRequest;
 
	public class LoadImg {
 
		public var imgB:Bitmap;
 
		public function LoadImg(url:String):void {
			this.imgB = new Bitmap();
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loader.load(new URLRequest(url));
		}
 
		private function onComplete (event:Event):void {
			var imgBD = event.target.content.bitmapData;
			this.imgB.bitmapData = imgBD;
		}
 
		public function getBitmap():Bitmap {
			return this.imgB;
		}
	}
}
Работает, спасибо большое. Получается при вызове dno.getBitmap() на сцену добавляется пустой битмап, а потом он заполняется. не думал что битмап заполнится автоматически при таком сценарии) Спасибо еще раз

Старый 29.01.2014, 18:22
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 7  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Вы добавляете на сцену битмап, который используется в лоадере.
Если бы Вы сделали .clone(), такого бы не случилось и битмап не "заполнился".

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

Регистрация: Nov 2009
Сообщений: 80
да, логично) спасибо всем за помощь

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

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

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


 


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


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