Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как запретить дочерним компонентам слушать события родительского компонента (http://www.flasher.ru/forum/showthread.php?t=172450)

HardCoder 09.12.2011 21:09

Как запретить дочерним компонентам слушать события родительского компонента
 
Здравствуйте. Такая история: есть компонент Panel, в нем еще куча кнопок и компонентов. На Panel вешаю слушатель mouseDown.
Код AS3:

<s:Panel mouseDown="movePannel(event)"/>

Но кнопки и пр. компоненты в середине этого Panel тоже его слушают. Подскажите пожалуйста, как им это запретить?

Добавлено через 1 час 46 минут
Подскажите тогда хоть как в обработчике movePannel определить по каком обьекте было нажато мышью...

GBee 09.12.2011 23:25

event.target - по кому шмякнули.
event.currentTarget - ваша панелька.

HardCoder 10.12.2011 00:00

Наверное я не совсем корректно задал вопрос
Код AS3:

<s:Panel id="mainPanel" mouseDown="movePannel(event)">
<s:Button id="createEventsButton"/>
</s:Panel>

А вот АС:
Код AS3:

private function movePannel(e:MouseEvent):void{
        trace(e.target is Panel)
        trace(e.target == this.mainPanel)
        trace(e.target)
}

Теперь кликаем по панели
Цитата:

false
false
Main0.WindowedApplicationSkin2.Group3.contentGroup.VGroup7.mainPanel.PanelSkin13._PanelSkin_Group1.contents.topGroup.titleDisplay
Выводит false потому что сам флексовский класс Panel состоит из разных компонентов и e.target указывает на них а не на экземпляр класса Panel

Bgg 10.12.2011 00:07

Читали комментарий?
Цитата:

Сообщение от GBee (Сообщение 1050668)
event.target - по кому шмякнули.
event.currentTarget - ваша панелька.


HardCoder 10.12.2011 00:22

Цитата:

Сообщение от Bgg (Сообщение 1050676)
Читали комментарий?
Цитата:

event.target - по кому шмякнули.
event.currentTarget - ваша панелька.

Да при чем здесь это? Кликаю по панели (экземпляр класса Panel), currentTarget выдает
Цитата:

Main0.WindowedApplicationSkin2.Group3.contentGroup.VGroup7.mainPanel
Кликаю по кнопке, которая находится на этой панели, и угадайте что выдает:
Цитата:

Main0.WindowedApplicationSkin2.Group3.contentGroup.VGroup7.mainPanel
Потому что корневой экранный обьект для кнопки будет Panel и корневой обьект для Panel будет Panel

Добавлено через 6 минут
Поэтому currentTarget здесь не катит. target тоже не катит, потому что кликая по кнопке выдает кнопку, а кликая по панели - выдает ее компоненты, скины или из чего там она еще состоит а не саму панель.
А мне нужно узнать был ли клик проведен над экземпляром класса Panel или по одной из кнопок на ней?

GBee 10.12.2011 02:30

Тогда всем детям панели сделайте mouseChildren=false. Теперь если target.parent!=panel , то это панель :о)

HardCoder 10.12.2011 17:40

Ладно. Компоненты добавил отдельно (не в панель). Теперь панель слушает только свои события, а компоненты свои... Что тут еще поделаешь...


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

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