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

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

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

Регистрация: May 2010
Сообщений: 34
По умолчанию addChild у Loader

Здравствуйте!
Уже долго бьюсь над такой проблемой.
Object, состоящий из семи Loader, отказывается использовать addChild, хотя файл вроде бы загружен, так как событие COMPLETE при этом срабатывает. Если в это же место поставить обычный одиночный Loader, то все работает.
Вот сам код:

Код AS3:
var ldr:Object = new Object;
for (i=0;i<7;i++){
ldr[i]=new Loader();
}
ldr[3].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
function Compl():void {
for (i=0; i<7; i++) {
Url = new URLRequest("3_1_1.jpg");
ldr[i].load(Url);
addChild(ldr[i]);
}

Старый 18.05.2010, 22:49
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
ничего не получилось =( грузит твой пример все 7 картинок и всё тут!
__________________
Поймай яблоко 2!

Старый 19.05.2010, 10:50
Follower вне форума Посмотреть профиль Отправить личное сообщение для Follower Найти все сообщения от Follower
  № 3  
Ответить с цитированием
Follower
 
Аватар для Follower

Регистрация: May 2010
Сообщений: 34
По умолчанию Re:

Сейчас напишу поподробней. Вот пустой файл только с этим кодом:
Код AS3:
import flash.display.Loader;
 
var i:int;
var Url:URLRequest;
var ldr:Object = new Object;
for (i=0; i<7; i++) {
	ldr[i]=new Loader();
	ldr[i].height=240;
	ldr[i].width=180;
	ldr[i].x=180*i;
}
 
ldr[6].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
 
сompl();
 
function сompl():void {
	for (i=0; i<7; i++) {
		Url = new URLRequest("file:///F:/SITE/images/galery/3_3_"+String(i+1)+".jpg");
		ldr[i].load(Url);
		addChild(ldr[i]);
	}
}
 
function imgLoaded(event:Event):void {
	trace("Complete!");
}
Из ошибок выводит только "Complete!". URL правильный. Все равно не отображает.

Старый 19.05.2010, 11:41
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 4  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Вы пытаетесь отобразить картинки не дождавшись загрузки.
Попробуйте так:
Код AS3:
import flash.display.Loader;
 
var i:int;
var Url:URLRequest;
var ldr:Object = new Object;
for (i=0; i<3; i++) {
	ldr[i]=new Loader();
	ldr[i].height=240;
	ldr[i].width=180;
	ldr[i].x=180*i;
	ldr[i].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
}
 
сompl();
 
function сompl():void {
	for (i=0; i<3; i++) {
		Url = new URLRequest(String(i+1)+".jpg");
		ldr[i].load(Url);
	}
}
function imgLoaded(e:Event):void {
	addChild(e.target.content);
	trace("Complete!");
}
Да, по окончании загрузки отпишитесь от листенеров

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
ldr[6].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
А кто Вам вообще сказал что последняя картинка загрузится последней?

Старый 19.05.2010, 12:06
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
и почему это нельзя добавлять лоадер до загрузки? я не говорю про корректность этого действия. я про ошибку — спокойно себе аттачится и уже на экране ждет загрузки.

P.S.
еще раз повторюсь — ошибку воспроизвести не удалось. вставил тупо первый код, закомментировал лиснер и подставил URL картинки наугад.
__________________
Поймай яблоко 2!

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

Регистрация: May 2010
Сообщений: 34
По умолчанию Спасибо

Жень Шень, спасибо, в таком виде все работает:
Код AS3:
import flash.display.Loader;
 
var i,j:int;
var Url:URLRequest;
var ldr:Object = new Object;
for (i=0; i<7; i++) {
	ldr[i]=new Loader();
	ldr[i].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
}
 
Compl();
j=0;
 
function Compl():void {
	for (i=0; i<7; i++) {
		Url = new URLRequest("file:///F:/SITE/images/galery/3_3_"+String(i+1)+".jpg");
		ldr[i].load(Url);
	}
}
 
function imgLoaded(e:Event):void {
	e.target.content.height=240;
	e.target.content.width=180;
	e.target.content.x=j*180;
	j++;
	addChild(e.target.content);
}
Однако очень неудобно, что размер и положение можно изменять только после загрузки, иначе говорит, что кто-то там не должен быть null.
Нельзя ли как-то передавать в imgLoaded номер обьекта?

Код AS3:
z=int(String(e.target.url).substr(34,1))-1;
Вот так AS3 плодит индусов(

Добавлено через 2 часа 55 минут
Благодаря вашим мудрым советам отображение работает, но еще один вопрос.

Как мне так обработать нажатие на это самое отобразившееся дитя, чтобы нажатое менялось контентом с нулевым?

Если просто
Код AS3:
if (z!=0) {
	l[z].contentLoaderInfo.addEventListener(MouseEvent.CLICK, chang);
}
...
function chang(e:MouseEvent):void {
	var temp:Loader=new Loader;
	var z:int;
	z=1;
	removeChild(l[0].content);
	removeChild(l[z].content);
	temp=l[0];
	l[0]=l[z];
	l[z]=temp;
	addChild(l[0].content);
	addChild(l[z].content);
}
не работает. Переданное из e:Event вообще странное.


Последний раз редактировалось Follower; 19.05.2010 в 14:03.
Старый 19.05.2010, 23:59
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А с каких пор у Loader работает addChild?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 20.05.2010, 00:05
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 9  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
это по-испански. "аддчайлд и лоадер" по-нашенски
__________________
Поймай яблоко 2!

Старый 20.05.2010, 00:15
Follower вне форума Посмотреть профиль Отправить личное сообщение для Follower Найти все сообщения от Follower
  № 10  
Ответить с цитированием
Follower
 
Аватар для Follower

Регистрация: May 2010
Сообщений: 34
А по существу вопроса?

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

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

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


 


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


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