![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Спасибо новоприбывшему человеку (теперь я знаю -- его зовут Филипп) за хорошую тему.
У меня вопрос: почему бы не воспользоваться определением состояния, сравнивая его с EventPhase.AT_TARGET ? |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
да.. странно все это,
ну таргеты ты разные получешь - это понятно, потому что перехватываешь bubble фазу, и тебе шлется все подряд - в какую область окна не кликнули. Тут все тоже что и со спрайтами, уникального поведения не вижу. Нужно както докопаться до closeButton чтобы на нее навесить событие, а вот как это сделать, я не понял. Сейчас еще пороюсь. Похоже это вопрос - знаю как... эх документации не хватает. |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Отключить bubbling, не будет пузырькового эффекта. Сверять стадию на равенство EventPhase.AT_TARGET.
|
|
|||||
|
Проверил фазу для всех случаев. Ниже приведен лог в случае клика на клозбатон, в случае клика на инстансе 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 Нужный нам случай помечен <<<. Интерсено, что первый случай, полностью (?) совпадает с первой строкой втого случая, именно в этом и загвоздка, непонятно, как это дело различить.. Как его отловить? |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Цитата:
|
|
|||||
|
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);
}
}
}
|
|
|||||
|
стервочка (я мужик)
|
Никогда не был силён в компанентах, и врят ли буду, так не люблю готовое. В общем я конечно могу тупить, так в чём проблема написать свой евент наследованный от Event? там в конструктор напрямую передаёшь, что надо, а что не надо. Любые таргеты и включаешь выключаешь бублинги и любую бредятину которую ты захочешь запихнуть в событие.
Последний раз редактировалось BlooDHounD; 27.12.2005 в 01:44. |
|
|||||
|
стервочка (я мужик)
|
ну вот пример моего события ... оно конечно примитивно ... но для моего случия подходит
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));
}
|
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Блуд прав, просто наследовать от Event, в конструкторе после super() отключить бабблинг
|
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
2Antares,
не понял я - причем тут перезначать, ну работали бы со своими собыитиями - ну хорошо, тут ведь задача стоит перехватить событие клика у окна, и события шлет оно само как хочет, причем тут перезначать? |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|