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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.10.2009, 00:02
a1. вне форума Посмотреть профиль Отправить личное сообщение для a1. Посетить домашнюю страницу a1. Найти все сообщения от a1.
  № 1  
Ответить с цитированием
a1.

Регистрация: Sep 2004
Сообщений: 42
Отправить сообщение для a1. с помощью ICQ
По умолчанию Доступ к прелоадеру картинки

Весь вечер голову ломаю — как получить доступ к прелоадеру картинки? Хочу его убрать после загрузки изображения, а не просто сверху закрыть изображением?
Код AS3:
private function xmlLoaded(e:Event)
{
	xml = new XML(e.target.data.replace(/\r\n/gi,"\n"));
	var cnt:Number = 0;
	for each (var img:XML in xml.album.image) {
		var ldr:Loader = new Loader();
		var imgPan:Sprite = new Sprite();
		imgPan.addChild(new Prel());
		imgPan.addChild(ldr);
		ldr.contentLoaderInfo.addEventListener(Event.OPEN, imgInit);
		ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
		ldr.load(new URLRequest('../gallery/' + xml.album.attribute('cat') + '/' + xml.album.attribute('name') + '/' + img.attribute('src')));
		images[cnt] = imgPan;
		images[cnt].x = cnt *100;
		images[cnt].y = 300;
		addChild(images[cnt]);
		cnt++;
	}
}
 
 
private function imgLoaded(e:Event)
{
	var bm:Bitmap = e.target.content as Bitmap;
	bm.smoothing = true;
	bm.x = - bm.width / 2;
	bm.y = - bm.height / 2;
}
Я может вообще не тем путём пошёл?

Добавлено через 1 час 56 минут
разобрался, сделал так:

Код AS3:
	private function xmlLoaded(e:Event)
	{
		xml = new XML(e.target.data.replace(/\r\n/gi,"\n"));
		var cnt:Number = 0;
		var imgPan:Sprite = new Sprite();
 
		for each (var img:XML in xml.album.image) {
			var ldr:Loader = new Loader();
			var imgPlaceHolder:Sprite = new Sprite();
			with (ldr) {
				contentLoaderInfo.addEventListener(Event.OPEN, imgInit);
				contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
				visible = false;
				alpha   = 0;
				load(new URLRequest('../gallery/' + xml.album.attribute('cat') + '/' + xml.album.attribute('name') + '/' + img.attribute('src')));
			}
			imgPlaceHolder.addChild(ldr);
			images[cnt] = imgPlaceHolder;
			with (images[cnt]) {
				x = 1000;
				y = 300;
				visible = false;
				alpha   = 0;
			}
			imgPan.addChild(images[cnt]);
			cnt++;
		}
		var maska:Sprite = new Sprite();
		maska.graphics.beginFill(0x000000);
		maska.graphics.drawRect(0, 50, 960, 500);
		maska.graphics.endFill();
		imgPan.addChild(maska);
		imgPan.mask = maska;
		addChild(imgPan);
		beginSlideshow();
	}
 
	private function imgInit(e:Event)
	{
		var imgPlaceHolder:Sprite = (e.target as LoaderInfo).loader.parent as Sprite;
		var prel:Prel = new Prel();
		prel.name = 'prel';
		imgPlaceHolder.addChild(prel);
	}
 
	private function imgLoaded(e:Event)
	{
		var bm:Bitmap = e.target.content as Bitmap;
		bm.smoothing = true;
		bm.x = - bm.width / 2;
		bm.y = - bm.height / 2;
		var imgPlaceHolder:Sprite = (e.target as LoaderInfo).loader.parent as Sprite;
		imgPlaceHolder.removeChild(imgPlaceHolder.getChildByName('prel'));
		TweenMax.to((e.target as LoaderInfo).loader, .5, {autoAlpha: 1});
	}
Гуру, посмотрите пожалуйста код, что я неправильно делаю (всё работает, в целях самосовершенствования)


Последний раз редактировалось a1.; 19.10.2009 в 00:05.
Старый 19.10.2009, 08:42
ladon вне форума Посмотреть профиль Отправить личное сообщение для ladon Найти все сообщения от ladon
  № 2  
Ответить с цитированием
ladon

Регистрация: May 2006
Сообщений: 125
Сильное колдунство. Я правда не понимаю почему ты просто не сделаешь отдельный класс который будет заниматься загрузкой и отдельно класс который будет создавать элементы и инициализировать их? Там бы и хранил и лоадер и прелоадер и ссылки нужные.

Код AS3:
	public class CIniter {
 
		public function CIniter(){
 
		}
		public function Init(xml:XML):void{
			for each (var img:XML in xml.album.image) {
				var elem:CIniterElem = new CIniterElem();
				elem.Init(img);
 
			}
		}
	}

Код AS3:
public class CIniterElem extends Sprite {
		var ldr:Loader = null;
		var prel:Sprite = null;
		public function CIniterElem() {
		}
 
		public function Init(img:String) :void{
			ldr = new Loader();
			prel = new Prel();
			addChild(prel);
 
			нужные действия по загрузке	
		}
 
	private function imgLoaded(e:Event){
		removeChild(prel);
 
		var bm:Bitmap = e.target.content as Bitmap;
		bm.smoothing = true;
		bm.x = - bm.width / 2;
		bm.y = - bm.height / 2;
	}
}


Последний раз редактировалось ladon; 19.10.2009 в 08:51.
Старый 19.10.2009, 11:04
a1. вне форума Посмотреть профиль Отправить личное сообщение для a1. Посетить домашнюю страницу a1. Найти все сообщения от a1.
  № 3  
Ответить с цитированием
a1.

Регистрация: Sep 2004
Сообщений: 42
Отправить сообщение для a1. с помощью ICQ
согласен, с классами интереснее получается.

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

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

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


 


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


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