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

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

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
По умолчанию Как восстановить цепочку диспетчеризации событий?

У меня такая ситуация: Сцена, на ней по орбитам движутся планеты. По клику на каждой планете рядом с ней создается контейнер с кнопками - возможные действия на этой планете. Контейнер следует за планетой. Чтобы контейнер с кнопками был всегда сверху и не перекрывался другими планетами, он чайлдится не к своей планете а к сцене на верхний уровень. Соответственно, когда происходит клик по кнопке, цепочка диспетчеризации оказывается "разорвана" т.е. событие клика в фазе захвата/всплытия отрабатывается: сцена - контейнер - кнопка - контейнер - сцена. Планета оказывается выкинутой из цепочки. А мне бы хотелось иметь ее на фазе захвата, чтобы помечать ее как текущую и легко получать ее id, а не через навороченную цепочку parent.leader.parent... (leader это указатель на планету, чтобы иметь возможность перемещать кнопки следом за ней). На ум приходит слушать событие в контейнере и диспатчить его планете, но тогда планета получит событие в фазе TARGET, а мне это не нужно, мне нужно отработать клик на ней в фазе захвата. Можно что-то придумать в данной ситуации или к планете можно добраться только через прямую цепочку указателей?

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А почему нельзя держать Dictionary со ссылками на планеты / контейнеры?
__________________
Hell is the possibility of sanity

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А как контейнер движется за планетой? У него есть ссылка на нее?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от wvxvw Посмотреть сообщение
А почему нельзя держать Dictionary со ссылками на планеты / контейнеры?
Ну, у меня не Dictionary а самопальные списки объектов. Как мне Dictonary поможет?

Добавлено через 38 секунд
Цитата:
Сообщение от GBee Посмотреть сообщение
А как контейнер движется за планетой? У него есть ссылка на нее?
Да. leader

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

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
Цитата:
чтобы контейнер с кнопками был всегда сверху и не перекрывался другими планетами, он чайлдится не к своей планете а к сцене на верхний уровень.
Это, не совсем правильно, клип с кнопками должен оставаться на том уровне, где и планеты, просто надо его поместить выше других объектов, хотя при добавлении клипа на отображение он автоматически переходит на самый верхний уровень.
Эта функция помещает, контейнер с кнопками, на самый верх, контейнера с планетами.
Код AS3:
контейнер с планетами.setChildIndex(контейнер с кнопками,контейнер с планетами.numChildren-1);
__________________
Книги и желание лучшие учителя.

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от Vektor Посмотреть сообщение
Это, не совсем правильно, клип с кнопками должен оставаться на том уровне, где и планеты, просто надо его поместить выше других объектов, хотя при добавлении клипа на отображение он автоматически переходит на самый верхний уровень.
Эта функция помещает, контейнер с кнопками, на самый верх, контейнера с планетами.
Код AS3:
контейнер с планетами.setChildIndex(контейнер с кнопками,контейнер с планетами.numChildren-1);
Если контейнер чайлдится к планете, он не может быть выше других планет, если только сама планета не верхняя в списке. Можно конечно при присоединении контейнера кидать планету на верх списка, но как тогда быть, если контейнеры открыты у двух планет одновременно? Тогда одна планета все равно наползет на контейнер другой.

Старый 16.01.2012, 19:08
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 7  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Цитата:
Сообщение от Korchy Посмотреть сообщение
Цитата:
А как контейнер движется за планетой? У него есть ссылка на нее?
Да. leader
что мешает тогда слушать события кнопок конетйнеру и просто вызвать метод планеты напрямую?
__________________
Хороший отдых - половина работы.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
что мешает тогда просто вызвать метод планеты напрямую?
Да, по-моему, профит тут, я спецом и спрашивал.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 16.01.2012, 19:32
Vektor вне форума Посмотреть профиль Отправить личное сообщение для Vektor Найти все сообщения от Vektor
  № 9  
Ответить с цитированием
Vektor
 
Аватар для Vektor

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
Я не внимательно прочитал, вопрос, поэтому некорректный дал ответ.
Я имел ввиду, к планете, а не в клип с планетой, как у вас и сделано.
Сори.
__________________
Книги и желание лучшие учителя.


Последний раз редактировалось Vektor; 16.01.2012 в 19:36.
Старый 16.01.2012, 23:20
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 10  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от artcraft Посмотреть сообщение
что мешает тогда слушать события кнопок конетйнеру и просто вызвать метод планеты напрямую?
Цитата:
Сообщение от GBee Посмотреть сообщение
Да, по-моему, профит тут, я спецом и спрашивал.
Я так и делаю. Но вот так например выглядит обращение к планете от одной из кнопок интерфейсного окна:

Код AS3:
private function GetPlanetId():uint {
	return PlanetButtons(IndustryWindow(parent.parent.parent).Leader.parent).Leader.Id;
}
что по-моему не есть гут. Чайлд не должен в жесткую знать такую длинную линейку своих парентов.

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

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

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


 


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


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