![]() |
Drag & drop реагирует на дочерних элементах
Есть экземпляр Panel, на нем размещены элементы управления. В приведенном ниже примере Drag & drop срабатывает всегда, даже когда юзер сделал клик на кнопке или текстовом поле. А хочется, чтобы панель перетаскивалась только за заголовок. Вариант добавить на все элементы событие mouseDown и душить его, чтобы оно не обрабатывалось панелью нравится не очень :) Наверное же есть способ по-красивее?
Код AS3:
|
Свойство event.currentTarget для любого элемента внутри панели всегда будет указывать на саму панель, т.к. событие всплывающее, а подписан обработчик именно на событие панели. Следует использовать свойство event.target, указующее на оригинальный элемент, в котором произошло событие, т.е. определить, что приходит в event.target при нажатии на заголовок и стартовать перетаскивание только в этом случае.
|
Приходит Main0.panel.UIComponent18.UITextField20, но делать такое сравнение:
Код AS3:
|
У этого объекта наверняка есть десятка два характерных свойств. Родитель и позиция кажутся наиболее многообещающими.
|
Добавил для Panel на событие creationComplete свойство hitArea:
Код AS3:
И еще, параллельный вопрос, почему использование FlexSprite приводит к ошибке: Код AS3:
|
По прежнему не понимаю твоей проблемы. Я положил панель, написал ей заголовок, в неё кинул кнопку, на клик подписал событие, в котором выводил класс источника события и класс парента этого объекта, и вот что получил:
Код:
mx.containers::Panel BlackTest // клик по пустой панели |
Согласен, для моей небольшой задачки этого вполне достаточно. Просто я изучаю Flex и меня очень удивил этот момент, захотелось найти хорошее решение. Наиболее приличный вариант, как на мой взгляд, выглядит так:
Код AS3:
У панели есть свойство headerHeight, которое определяет высоту заголовка окна отлично задается через mxml. Однако, при обращении к этому свойству через AS, дабы определить область заголовка, возникает ошибка компиляции: Код:
Error: Access of possibly undefined property headerHeight through a reference with static type mx.containers:Panel.Код AS3:
|
| Часовой пояс GMT +4, время: 14:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.