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

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

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Отследить пополнение/изменение дисплейЛиста?

А можно ли как-то подписаться на onAdded но только так, чтобы событие возникало не тогда, когда объект добавляется в дисплейлист другого, а, наоборот, к нему что-то добавляют? (нужно банально для того, чтобы при каждом добавлении чего либо на основной таймлайн один из клипов всегда занимал самую большую глубину)
__________________
Hell is the possibility of sanity

Старый 25.03.2008, 13:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от wvxvw
А можно ли как-то подписаться на onAdded но только так, чтобы событие возникало не тогда, когда объект добавляется в дисплейлист другого, а, наоборот, к нему что-то добавляют? (нужно банально для того, чтобы при каждом добавлении чего либо на основной таймлайн один из клипов всегда занимал самую большую глубину)
Либо масло масляное, либо…

Подписаться у parent на ADDED и поднимать себя на большую глубину нельзя?

Старый 25.03.2008, 13:48
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 3  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Я бы сделал так:
Код:
this.stage.addEventListener(Event.ADDED,onAdded);
function onAdded(e:Event):void{
	trace("!");
};
var s:Sprite=new Sprite();
this.addChild(s);

Старый 25.03.2008, 13:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А разве чайлд получит это событие когда на стейдж другой чайлд добавится? =\
Т.е. у парента onAdded будет всего 1 раз, и то я за ним не успею %) это ж основной таймлайн, куда его еще удаляйть/добавлять? =) Нужно, не важно где, получать уведомление о том, что что-то добавилось к этому таймлайну. Т.е. если бы я мог, предположим, переписать addCHild() у стейджа так, что он бы вещал что-нть типа Event.CHILD_ADDED это было бы вообще замечательно %) Проблема только в том, что переписать это не представляется возможным...
__________________
Hell is the possibility of sanity

Старый 25.03.2008, 14:06
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не понимаю проблемы. Набросал:

Код:
var sp1:Sprite = new Sprite();
sp1.name = 'sp1';
var sp2:Sprite = new Sprite();
sp2.name = 'sp2';
function added(event:Event):void {
	trace(event, event.target, event.target.name);
}
addChild(sp1);
sp1.parent.addEventListener(Event.ADDED, added);
addChild(sp2);
Правда, added должна быть описана внутри sp1, но лень было писать такую. В конце концов, код выше парой постов тоже нормальный.

Старый 25.03.2008, 14:08
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 6  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Я понял задачу так: что есть один ДО, который всегда на верху.
И зачем одному чайлду знать что добавился другой? Стэйдж должен регулировать глубины ДО из своего дисплэйлиста.

можно перепивать addChild у своего контейнера...

Старый 25.03.2008, 14:28
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 7  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
Не уверен, что понял правильно. Или имеется ввиду просто отлов события не на target phase, чтобы узнать что что-то добавили к спрайту?

Старый 25.03.2008, 15:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от terbooter
Я понял задачу так: что есть один ДО, который всегда на верху.
И зачем одному чайлду знать что добавился другой? Стэйдж должен регулировать глубины ДО из своего дисплэйлиста.

можно перепивать addChild у своего контейнера...
Во, вот, так и есть!
Ток я не могу переписать addCHild, потому что не могу из этого класса рассказать стейджу самого базового ДО что нужно делать в этой функции =( Т.е. предположим, есть у меня какой-то DocumentClass, в нем я могу достучаться до this.stage, а вот поменять его this.stage.addCHild() - нет...

ЗЫ. Мне не так уж важно, будет ли об этом знать один чайлд, или его родитель, хоть как-то бы %)

__etc: sp1.parent.addEventListener(Event.ADDED, added);
Хм... или я чего-то не понимаю, или одно из двух %) Я думал, что этот евент генерит чайлд, а не родитель...

А, все, попробовал, и вправду так работает %) Чет я туплю, вобщем... сорь
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 25.03.2008 в 15:31.
Старый 25.03.2008, 15:59
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 9  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
еще вариант, ловим ADDED на пузырьке

Код:
import flash.display.Sprite;


var alwaysOnTop:Sprite = new Sprite();
alwaysOnTop.name = "alwaysOnTop";
with (alwaysOnTop.graphics) {
	beginFill(0xFF0000);
	lineStyle(2, 0xFFFFFF)
	drawCircle(stage.stageWidth/2, stage.stageHeight/2, 100);
	endFill();
}
addChild(alwaysOnTop);


stage.addEventListener(Event.ADDED, onAdded, false);
function onAdded(event:Event):void {
	addChildAt(alwaysOnTop, numChildren-1);
}


for(var i:int = 0; i < 100; i++) {
	var sprite:Sprite = new Sprite();
	sprite.name = "sprite"+i;
	with (sprite.graphics) {
		beginFill(Math.random()*0xFFFFFF);
		drawRect(stage.stageWidth*Math.random(), stage.stageHeight*Math.random(), 100*Math.random(), 100*Math.random());
		endFill();
	}
	addChild(sprite);
}

Старый 25.03.2008, 16:59
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 10  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Немного подумав...
Можно добавлять не наверх, а подниз:
Код:
addChildAt(displayObject,0);

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

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

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


 


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


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