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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.06.2010, 18:20
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 1  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Событие клонируется при нативном EventDispatcher::dispatchEvent`е.
Событие клонируется при повторном диспатче использованного эвента. При обычном распространении события - оно не клонируется. И не важно вызвал метод Sprite или EventDispatcher.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Сообщение от switcher! Посмотреть сообщение
Событие клонируется при повторном диспатче использованного эвента. При обычном распространении события - оно не клонируется. И не важно вызвал метод Sprite или EventDispatcher.
Вы мои слова повторили. Только вот у Sprite`а нету метода dispatchEvent.
И вот только оно клонируется всегда, даже при первом вызове dispatchEvent`а.

Короче, то что сказал dimarik.

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

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Вы мои слова повторили
можно на "ты". Я флеймовую темку почитал по этому поводу. Просветился -)))

Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Только вот у Sprite`а нету метода dispatchEvent.
я где-то сказал, что Sprite определяет dispatchEvent?

Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
И вот только оно клонируется всегда, даже при первом вызове dispatchEvent`а.
нет, клон это новый объект. Как тогда объяснить это, если dispatchEvent всегда создает клон:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.EventDispatcher;
 
	public class Example extends Sprite {
		private var _event:Event;
 
		function Example() {
			super();
 
			this._event = new Event(Event.CHANGE);
 
			var s3:EventDispatcher = new EventDispatcher();
			s3.addEventListener(Event.CHANGE, this._test1);
			s3.dispatchEvent(this._event);
		}
 
		private function _test1(e:Event):void {
			trace(this._event === e); //true
		}
	}
}
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Короче, то что сказал dimarik.
имо, dimarik задал вопрос, а не выдвинул утверждение.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вы имеете ввиду, если вызвать метод EventDispatcher#dispatchEvent, то внутри него произойдет event.clone();
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Ого, и вправду. Ошибался, спасибо, буду знать. А второе событие уже клон.

Видимо событие несёт в себе какой-то флаг а-ля isUsed, и раздваяйца оно только если событие уже было использовано.

Цитата:
я где-то сказал, что Sprite определяет dispatchEvent?
Не так понял. Во флеше все методы виртуальные, поэтому эта фраза по сути смысловой нагрузки для меня не несёт. Вот и додумал =)

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

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
А второе событие уже клон.
ага.
Собственно, под эгидой этого топика я надеялся избавиться от геттеров в сложных событиях (наступление которого ожидают несколько объектов/обработчиков). Но, видимо - не судьба.
"Не клонируется", раз... "Не клонируется", два... "Не клонируется", три... Пр...

P.S. оффтоп. Даный топик имеет тег "Лень", по которому в поиске пробивается только этот топик. Забавно ))

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
switcher, геттеры (ридонли) - это лишь перестраховка в 99% случаев, чтобы случайно что-нибудь не изменить - чисто по запарке.

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

Регистрация: May 2009
Сообщений: 220
разумеется, но я эту "перестраховку" вывел в стандарт. В простых нотификациях можно и открытыми переменными обойтись, ибо плевать, что обработчик с объектом события сделает. Оно (событие) ему только и предназначается.
Однако в сложных, когда подписчиков много, я не хочу держать в голове: что я могу, а что не могу делать с полями объекта события. Я хочу быть уверенным, что объект как неизменный штамп события дойдет до адресата в том виде, в каком он изначально описывает событие.

А так, конечно, можно все переменные пабликами делать, из детей родителями управлять и т.д. => главное, "чисто по запарке" не запутаться

P.S. Я не занимаюсь миссионерством. Если кого-то сей подход не устраивает, пожалуйста, пожалуйста...

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от switcher! Посмотреть сообщение
P.S. Я не занимаюсь миссионерством.
Нет, вы просто занимаетесь фигней. Ну это примерно как постоянно ходить в перчатках сварщика, чтобы затраховаться от засовывания рук в печку.

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

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от etc Посмотреть сообщение
Нет, вы просто занимаетесь фигней. Ну это примерно как постоянно ходить в перчатках сварщика...
Я не использую геттеры в эвентах "постоянно". К тому же, вы сами не редко руководствуетесь в программировании правилом "шаг влево, шаг вправо - расстрел". И я не вижу ничего зазорного в использовании геттеров, особенно, когда производительность не критична.
Вам удобнее так, мне - иначе. Вот и весь сказ

Цитата:
Сообщение от dimarik Посмотреть сообщение
Я пытаюсь рассуждать как должно быть...
Разумно.
Однако, думаю, это защита от дурака. Т.е., например, первое распространение события еще не закончилось, а прогер уже задиспатчил эвент от того же объекта повторно. Допустим, без "пузырей". В итоге у события повисает фаза "цели". И когда поток исполнения программы возращается к баблингу первого события, уже имеется косяк: event.eventPhase === 2. Сомневаюсь, что такие мелочи проверяются перед каждым обработчиком.

Цитата:
Сообщение от dimarik Посмотреть сообщение
Реверс инженеринг или Вы начали работать у нас? )
ни то, ни другое. Я лишь подсмотрел тот узкий участок, который и так в многочисленных темах уже почти целиком было рассмотрен, разжеван, еще и тесты производительности приведены. Просто убедился )))

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

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

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

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


 


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


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