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

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

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
По умолчанию Можно ли подписаться на все события?

Есть некий класс, наследован, допустим, от спрайта. Мы его добавляем на стейдж, убираем, что-то с ним делаем. Можно ли для этого класса подписаться на все события сразу? Нужно для того чтоб из все сохранить а потом в определённый момент передиспатчить(с этим проблем нет). Можно конечно сделать много копипаста и подписаться на каждый тип события по отдельности. Также можно гарантировать что никаких пользовательских событий не диспатчится и все события что могут ходить описаны в Event.* Опять же знаю что в нормальном коде такое недопустимо, используется в академических и очень специфических целях.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Цитата:
Опять же знаю что в нормальном коде такое недопустимо
По-моему в этой строчке содержится ответ на вопрос. Если бы подобное было бы допустимо, а главное часто необходимо, думаю, адобовцы создали бы для этого отдельную функцию. А раз острой необходимости в этом нет, при возникновении академического интереса, полагаю, приходится создавать надуманные ситуации и писать много однотипного кода.
---
P.S. В Google я не ходил, могу оказаться неправ.


Последний раз редактировалось bav; 01.12.2010 в 11:43.
Старый 01.12.2010, 11:54
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я не знаю, зачем это нужно, но ответ очевиден - надо не подписываться на все события, а подписаться на одно событие (напр. Main.SUPER_EVENT), а все события в приложении свести к этому событию. Примерно так:

Код AS3:
private function onSuperEventIncoming(e:Event) : void
{
   var eventType:String = e.target.eventType; // это и есть реальное событие
}
Соответственно, все объекты в приложении старательно по любому поводу диспатчат одно и то же событие Main.SUPER_EVENT, указывая в собственной паблик переменной eventType, что за событие они имеют в виду.

Если событий много - можно кастомный класс написать для такого события. Но, еще раз повторюсь, не могу придумать, зачем это надо в реальной жизни.

Старый 01.12.2010, 12:14
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Перегрузить addEventListener у этого класса может просто? И записывать кто на что подписал его.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
Сообщение от mikhailk Посмотреть сообщение
Я не знаю, зачем это нужно, но ответ очевиден - надо не подписываться на все события, а подписаться на одно событие (напр. Main.SUPER_EVENT), а все события в приложении свести к этому событию. Примерно так:

Код AS3:
private function onSuperEventIncoming(e:Event) : void
{
   var eventType:String = e.target.eventType; // это и есть реальное событие
}
Соответственно, все объекты в приложении старательно по любому поводу диспатчат одно и то же событие Main.SUPER_EVENT, указывая в собственной паблик переменной eventType, что за событие они имеют в виду.

Если событий много - можно кастомный класс написать для такого события. Но, еще раз повторюсь, не могу придумать, зачем это надо в реальной жизни.
Вы наверно неправильно поняли. Ни один объект в коде сам не диспатчит ивентов, мне надо словить всякие Event.ADDED_TO_STAGE и прочие, те что генерирует сам флешплеер.

Цитата:
Сообщение от -De- Посмотреть сообщение
Перегрузить addEventListener у этого класса может просто? И записывать кто на что подписал его.
тоже видимо неправильно поняли. Мне надо в конструкторе этого класса самому подписаться на всё что можно.

Разъясню немного подробнее. Был класс и был у него конструктор, там он подписывался на всякие события, я не знаю какие. Мне надо сделать конструктор пустым и его код переместить в другой метод, который я позже вызову сам и объект инициализируется с запозданием. Проблема в том что если он в конструкторе подписался на Event.ADDED_TO_STAGE, то если я это перенесу в метод, который вызову после добавления на стейдж, то это событие уже не придёт, а мне надо его ему отправить. Руками если я сам ловлю и отправляю потом, после инициализации, то всё работает. Только хотелось бы лаконично всё за него получить а потом ему же всё и отправить.

Старый 01.12.2010, 14:05
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Не понятно что там конкретно куда добавляется, но очевидно, что перехват всех событий - не лучший способ решения подобной задачи.

Aquahawk, а если всё-таки избежать таких формулировок:
Цитата:
Есть некий класс, наследован, допустим, от спрайта.
и сказать конкретно, что необходимо сделать?
Уверен, что можно найти намного более рациональный способ

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
goodguy
Я в бинаре модифицирую чужой компиленый код, что там может быть всё что угодно и оно может подписываться на всё что угодно, только я этот код выдираю и потом пускаю сам, соответственно часть событий пройдут мимо него, а они должны прийти. Я думаю что собрать за него все события а потом скормить их ему - наилучший вариант.

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

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
И всё, поди, без пошлины? (с)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 01.12.2010, 14:33
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 9  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
-De- по Российским законам реверс-инжиниринг и дизассемблинг разрешёны для обеспечения совместимости с разрабатываемым тобой продуктом, что я и делаю, так что всё нормально и вполне официально. Да и пока я правлю собой же написанные тесткейсы.

Старый 01.12.2010, 14:58
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Цитата:
по Российским законам реверс-инжиниринг и дизассемблинг разрешёны для обеспечения совместимости с разрабатываемым тобой продуктом
Ссылку на информацию по данному вопросу не дадите? В идеале, ссылку на закон, где это прописано.

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

Теги
addeventlistener , all events , все ивенты , все события
Опции темы
Опции просмотра

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

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


 


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


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