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

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

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По моему скромному мнению, если у нас нет жестких ограничений по производительности, то чем полнее информация в событии, тем лучше. Все-таки xml/json рулит по сравнению с набором безымянных чисел, всплывших неизвестно откуда и неизвестно по какой причине.

Продал твой фермер корову вместе с попоной на колбасу, сервер вернул информацию о том, что сделка акцептована, ты сформировал хорошее такое событие с xml-кой внутри, прогнал его не задумываясь по всем объектам (касса, хлев, склад, производственный план, что там еще), и все счастливы. Каждый объект взял из него то, что его касается, и все аккуратненько и синхронно обновилось.

Но, это лично мне так нравится.
Совсем не обязательно, что так правильно.

Старый 09.06.2010, 20:11
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 12  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
mikhailk, у нас речь не о обмене сервер-клиент, а о событиях в самой флешке. Наследники flash.events.Event так сказать)

Старый 09.06.2010, 22:36
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 13  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Если все события генерирует один объект, то можно предположить, что все параметры передаваемые через события как то связаны или имеют принадлежность к какой то сущности. Можно сделать и один класс события в котором будет один параметр представляющий собой класс, который содержит в себе нужные строго типизированные свойства (т.н. value object). Т.е решение подобное ому как делает Psycho Tiger, только не в ущерб типизации, автокомплита и т.д.
__________________
trace("Остановите Землю, я сойду!!!");

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

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
2 Mur4ik:
Как мне кажется, ваш вариант подходит в том случае, если этот объект с типизированными переменными будет использоваться ещё где-нибудь (допустим его будут передавать в качестве параметра для создания объектов на основе этого объекта), иначе, как мне кажется, нет смысла переносить список переменных из Event объекта в какой-то другой объект, потому что по сути добавляется только 1 промежуточный этап на пути доступа к переменным.

Старый 09.06.2010, 22:58
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 15  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Не спорю.
Просто если параметры передаваемые событием связаны, то мне удобнее видеть их в одном объекте, который их характеризует, вместо того чтоб в классе события создавать 5-10 параметров, с которыми работа только усложняется, особенно в случае когда нужно передать большую часть из этих параметров (имеется ввиду инициализация события). А вот имея один-два типизированных объекта все становится прозрачнее и удобнее, ИМХО.
__________________
trace("Остановите Землю, я сойду!!!");

Старый 10.06.2010, 13:50
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 16  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от etc Посмотреть сообщение
Досточно public-ов. От геттеров проку нет, событие всё равно клонируется постоянно.
Цитата:
Сообщение от fljot Посмотреть сообщение
Клонируется то клонируется, но это при бабблинге или в разных обработчиках...
что-то я, видимо, не понимаю. Не замечал, чтобы событие при баблинге клонировалось. По крайней мере, в дисплейобджектах.
Если все правильно про клонирование, то как/когда это происходит при нативном всплытии события?

Вот пример того, что наблюдаю я:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Example extends Sprite
	{
		private var _event:MyEvent;
 
		function Example() {
			super();
 
			var s1:Sprite = new Sprite();
			var s2:Sprite = new Sprite();
			var s3:Sprite = new Sprite();
 
			super.addChild(s1);
			s1.addChild(s2);
			s2.addChild(s3);
 
			s1.addEventListener(Event.CHANGE, this._test1);
			s2.addEventListener(Event.CHANGE, this._test2);
 
			s3.dispatchEvent(new MyEvent(Event.CHANGE, true));
		}
 
		private function _test1(e:MyEvent):void {
			trace(e.info); //10
			trace(this._event === e); //true
		}
 
		private function _test2(e:MyEvent):void {
			trace(e.info); //5
			e.info = 10;
			this._event = e;
		}
	}
}
Код AS3:
package  
{
	import flash.events.Event;
 
	public class MyEvent extends Event
	{
		public var info:int;
 
		function MyEvent(type:String, bubbles:Boolean = false, info:int = 5, cancelable:Boolean = false) {
			super(type, bubbles, cancelable);
 
			this.info = info;
		}
 
		// монжно раскомментить - трейсы те же.
		/*override public function clone():Event {
			return new MyEvent(super.type, super.bubbles, 20)
		}*/
	}
}

Старый 10.06.2010, 15:40
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 17  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Попробуйте сделать
Код AS3:
super.addEventListener(YourEvent.EVENT, super.dispatchEvent);

Старый 10.06.2010, 17:31
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 18  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
да, при редиспатче поюзанного эвента - он клонируется. Видимо, идет проверка а-ля:
Код AS3:
if (event.$target) //внутренний internal таргет
{
	event = event.clone();
}
Благо EventDispatcher и Event лежат в одном пакете. Однако, это домыслы, ибо неизвестно, что в тамошних сях записано.

Но не суть. Из контекста приведенных мною цитат ниразу не понятно, что идет редиспатч. Скорей наоборот - речь об обычном распространении события. А при нем, как показывают тесты, клонирования события от обработчика к обработчику не происходит.
Собственно, по этому поводу я и ожидал комментариев.

Старый 10.06.2010, 17:34
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 19  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Хм да, я тоже несколько удивлён=) etc, не разъяснишь?

Старый 10.06.2010, 17:57
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 20  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Событие клонируется при нативном EventDispatcher::dispatchEvent`е.

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

Теги
flash , Лень , Проектирование , события
Опции темы
Опции просмотра

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

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


 


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


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