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

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

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от undefined Посмотреть сообщение
лучше так:
GameOver extends flash.events.Event
а еще лучше так:
Код AS3:
public class GameOver {...}
всё, никакого extends

Если в коде диспатчится нативный Event, то GameOver является всего-навсего хранителем констант — типов события, всяких там
Код AS3:
public static const KAPETS:String = 'kapets';
public static const NE_SOVSEME_KAPETS:String = 'neSovsemeKapets';
Наследование от Event (не забываем при этом переопределить метод clone) как правило необходимо, если мы хотим добавить заветный data:*, чтобы событие еще и таскало за собой до конечного обработчика какую-то важную информацию.
__________________
Поймай яблоко 2!

Старый 25.09.2015, 17:48
Sevil вне форума Посмотреть профиль Отправить личное сообщение для Sevil Найти все сообщения от Sevil
  № 12  
Ответить с цитированием
Sevil

Регистрация: Apr 2014
Сообщений: 9
Цитата:
Сообщение от Zebestov Посмотреть сообщение
а еще лучше так:
Код AS3:
public class GameOver {...}
всё, никакого extends

Если в коде диспатчится нативный Event, то GameOver является всего-навсего хранителем констант — типов события, всяких там
Код AS3:
public static const KAPETS:String = 'kapets';
public static const NE_SOVSEME_KAPETS:String = 'neSovsemeKapets';
Наследование от Event (не забываем при этом переопределить метод clone) как правило необходимо, если мы хотим добавить заветный data:*, чтобы событие еще и таскало за собой до конечного обработчика какую-то важную информацию.
А зачем переопределять clone(), если, допустим, я каждый раз создаю новый эвент dispatchEvent(new CustomEvent(CustomEvent.MY_TYPE)); ?

а в CustomEvent у меня будет public var data:Object ={}; Куда я могу запихнуть всё что мне нужно, а конструктор будет принимать Object как второй аргумент dispatchEvent(new CustomEvent(CustomEvent.MY_TYPE, {data: param}));

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Sevil Посмотреть сообщение
А зачем переопределять clone()?
Об этом можно почитать в документации.
__________________
Поймай яблоко 2!

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

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
С событиями разобраться довольно просто. У нас есть 2 объекта Исполнитель и Заказчик. Заказчик нанимает исполнителя на определенную работу и знает о нем только то что он ее делает. Исполнитель не знает о заказчике ничего, для него работа и есть работа, пришло задание и он его делает. Нам надо дать знать Заказчику, что Исполнитель выполнил задание таким образом, чтобы Заказчик не стоял рядом с Исполнителем следя за каждым его шагом, а также чтобы Исполнитель после выполнения заказа не бежал искать заказчика чтобы передать ему результат, т.к. это выходит за пределы их роли, вот тут на помощь приходят события. Функция addEventListener - Исполнитель рядом со своей мастерской вешает корзину, на которой написано название события "Окончание работы" и Заказчик кидает туда конверт в котором содержится обработчик этого события. Функция dispatchEvent - Исполнитель завершая работы над заданием подходит к этой корзине и распечатывает конверты по очереди запуская обработчики событий. Функция removeEventListener - если заказчик вдруг решит по какой-то причине умереть, то ему желательно забрать свой конверт у Исполнителя, чтобы тот не пытался вызывать обработчик мертвого Заказчика, т.к. о Заказчике ничего не известно кроме его обработчика, так же забрать конверт надо, если результат просто перестает интересовать. Пользовательские события - это та же корзина, но принимать она может только оговоренные коробки, бандероли и другие предметы рассчитанные на результат выполненной работы, чтобы корректно выполнился обработчик, т.к. этот обработчик ждет результат строго определенного вида. Надеюсь это сочинение упростит понимание, а не запутает
__________________
ответ прост: be || !be == true

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Не очень хорошее сравнение заказчик - исполнитель. Так как мы не заказываем у той же кнопки, чтобы она нажалась, а только подсовываем ей конвертик.

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

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
А если заказчик заказал, чтобы исполнитель ждал нажатия на кнопку, от Его Величества Пользователя и как только так сразу сообщил об этом? Тут же роли достаточно условные, и в корзину может кинуть конверт любой, кто знает о существовании исполнителя. Мыши с клавиатурами, такие же Исполнители с корзинами, о которых не известно ничего кроме их программного интерфейса и того, что у них есть корзины с конвертами которые они в определенный момент открывают. Тут не важно как ЭТО произошло, а важно что ЭТО просто произошло и надо с этим как-то жить дальше.

Добавлено через 9 минут
Хотя тут больше всего, конечно, подходит термин Подписчик, т.к. заказчику, который инициализировал весь процесс может быть вообще не интересен результат. Это тем более говорит о том, что Исполнитель не должен никак взаимодействовать с Заказчиком.

Добавлено через 22 минуты
Если описывать все возможные остросюжетные варианты с фазами, со слабыми ссылками, с приоритетом, а так же отменой и клонированием событий, то количество действующих лиц увеличится и рядовая ситуация, объясняющая схему взаимодействия, сильно усложнится и маленькое эссе превратится в большой, драматический роман
__________________
ответ прост: be || !be == true

Старый 25.09.2015, 20:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 17  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
и в корзину может кинуть конверт любой, кто знает о существовании исполнителя
Технически, знать о конкретном исполнителе необязательно, учитывая, что конвертики можно подсовывать не только определенному почтальону, но и в наглую занести прямо на главпочтамт (подписка не на целевой фазе), то знать местного почтальона нам не обязательно.

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

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
Если мы зашли так далеко, то почтальона может убить каждый получатель письма, чтобы остальные подписанные на сообщения от Исполнителя не получили события. События - это очень просто)
__________________
ответ прост: be || !be == true

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

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

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


 


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


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