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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2005, 21:00
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 11  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Спасибо новоприбывшему человеку (теперь я знаю -- его зовут Филипп) за хорошую тему.

У меня вопрос: почему бы не воспользоваться определением состояния, сравнивая его с EventPhase.AT_TARGET ?

Старый 26.12.2005, 21:40
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 12  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
да.. странно все это,
ну таргеты ты разные получешь - это понятно,
потому что перехватываешь bubble фазу, и тебе шлется все подряд - в какую область окна не кликнули. Тут все тоже что и со спрайтами, уникального поведения не вижу.

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

Старый 26.12.2005, 21:43
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 13  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Отключить bubbling, не будет пузырькового эффекта. Сверять стадию на равенство EventPhase.AT_TARGET.

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

Регистрация: Jun 2004
Адрес: Moscow
Сообщений: 51
Отправить сообщение для FSBmipt с помощью ICQ
По умолчанию re

Проверил фазу для всех случаев. Ниже приведен лог в случае клика на клозбатон, в случае клика на инстансе TitleWindow и в случае клика на картинку (в теле TitleWindow):

Кликаем на TitleWindow
-----
target = ImageWindow_22, currentTarget=ImageWindow_22, eventPhase =2


Кликаем на клозбатон: <<<
-----
target = ImageWindow_22, currentTarget=ImageWindow_22, eventPhase =2
-----
target = ImageWindow_22.UIComponent_23.Button_26,
currentTarget=ImageWindow_22, eventPhase =3

Кликаем на картинку
-----
target = [object Loader], currentTarget=ImageWindow_63, eventPhase =3

Нужный нам случай помечен <<<. Интерсено, что первый случай, полностью (?) совпадает с первой строкой втого случая, именно в этом и загвоздка, непонятно, как это дело различить..

Как его отловить?

Старый 26.12.2005, 21:55
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 15  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Цитата:
Сообщение от Antares
Отключить bubbling, не будет пузырькового эффекта. Сверять стадию на равенство EventPhase.AT_TARGET.
а смысл? таргет фазу ведь все равно получить не можем, в смысле таргет фазу close button. Нет доступа к ней. Вот только в баблинг и в capture и можно перехватывать.

Старый 26.12.2005, 21:58
FSBmipt вне форума Посмотреть профиль Отправить личное сообщение для FSBmipt Посетить домашнюю страницу FSBmipt Найти все сообщения от FSBmipt
  № 16  
Ответить с цитированием
FSBmipt
 
Аватар для FSBmipt

Регистрация: Jun 2004
Адрес: Moscow
Сообщений: 51
Отправить сообщение для FSBmipt с помощью ICQ
Antares Да, надо попробовать. Тогда вопрос:
Как правильно отключить баблинг? Пробовал в теле обработчика - эффекта не заметил, пробовал оба метода stopImmediatePropagation() и stopPropagation().

Код:

Код:
		private function onClick(event:MouseEvent):Void{
			event.stopImmediatePropagation();
			Logger.msg("-----");
			Logger.msg("target = "+event.target+", currentTarget="+event.currentTarget+", eventPhase ="+event.eventPhase );
			if((event.currentTarget is ImageWindow)){
				if(event.target is ImageWindow){
					//Logger.msg("going close", event.target);
					WindowManager.closePopUp(event, event.currentTarget);
				}else{
					WindowManager.riseWindow(event, event.currentTarget);
				}
			}
		}

Старый 27.12.2005, 01:41
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 17  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Никогда не был силён в компанентах, и врят ли буду, так не люблю готовое. В общем я конечно могу тупить, так в чём проблема написать свой евент наследованный от Event? там в конструктор напрямую передаёшь, что надо, а что не надо. Любые таргеты и включаешь выключаешь бублинги и любую бредятину которую ты захочешь запихнуть в событие.


Последний раз редактировалось BlooDHounD; 27.12.2005 в 01:44.
Старый 27.12.2005, 01:54
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 18  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ну вот пример моего события ... оно конечно примитивно ... но для моего случия подходит
Код:
package game.events
{
	import flash.events.Event;

	public final class MonsterEvent extends Event
	{
		private var m_direction:String;
		
		public function MonsterEvent(type:String, direction:String, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			super(type, bubbles, cancelable);
			this.m_direction = direction;
		}
		
		public override function clone():Event
		{
			return new MonsterEvent(this.type, this.m_direction, this.bubbles, this.cancelable);
		}

		public override function toString():String
		{
			return formatToString("MonsterEvent", "type", "direction", "bubbles", "cancelable");
		}

		public function get direction():String
		{
			return this.m_direction;
		}
	}
}
Юзается это потом приблизительно так:
Код:
		private function doMove(event:Event):Void
		{
			switch (this._direction)
			{
				case MonsterDirection.LEFT: this.x -= this._speed; break;
				case MonsterDirection.RIGHT: this.x += this._speed; break;
				case MonsterDirection.TOP: this.y -= this._speed; break;
				case MonsterDirection.BOTTOM: this.y += this._speed; break;
				default: return;
			}
			this.dispatchEvent(new MonsterEvent(MonsterEventType.MONSTER_MOVE, this._direction));
		}

Старый 27.12.2005, 04:11
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 19  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Блуд прав, просто наследовать от Event, в конструкторе после super() отключить бабблинг

Старый 27.12.2005, 05:06
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 20  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
2Antares,
не понял я - причем тут перезначать, ну работали бы со своими собыитиями - ну хорошо,
тут ведь задача стоит перехватить событие клика у окна, и события шлет оно само как хочет, причем тут перезначать?

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

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

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


 


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


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