![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2006
Сообщений: 3
|
ПРивет, может кто подскажет как быть вот с чем:
1. Имеется MovieClip - прямоугольник (box). 2. На нём располагаются несколько его чаялдов - текстовые поля, или иконки. Нужно : Отследить клик на самом box ( перейти по ссылке ). При этом клик на текстовом поле должен обрабатываться самим текстовым полем, и клик на нём не должен считаться кликом на box. Курсор при MouseMove должен соостветственно меняться при прохождении текстовых полей на I. Нужно иметь возможность селектировать текст в текстовых полях. Что не получается. Если я определяю в классе box ( наследник от UIComponent ) какую либо из функций типа onPress, onRelease, итд. то движение курсора сразу перестаёт обрабатываться текстовыми полями и я вижу handCursor при наведении на них. Никаких селектирований уже не получается. Почему так? Если я переопределяю onMouseMove onMouseUp в классе box, и сам считаю, внутри бокса курсор или нет, то всё нормально до определённого момента - текстовые поля получают фокус, можно селектировать и прочее. Но! Я не могу изнутри box отследить перекрывается ли мой Box сверху каким то другим контролем или нет. Например: 1. Box расположился под scrollbar. При этом выходит, что клик на скролере ведёт к клику на box - переход по ссылке. 2. То же когда box расположился под управляющей кнопкой верхнего уровня. Тыкаем на кнопку ( в ней должен бы срабатывать onClick event ) но до него дело не доходит... бокс получает onMouseUp. вычисляет, что курсор на нём, и командует переход. Есть у кого ответы? Не понимаю почему переопределение onPress ведёт к потере способности чаялдов получать фокус... Не очень я пока в ActionScript... ![]() |
|
|||||
|
Что мешает создать класс BigBox, в нем есть экземпляр Box (box_instance) - и обработчик событий
А самому box_instance добавляешь слушателя
В Box определяешь событие onPress() на рассылку всем слушателям (если с ним что-то из вне делать)
А в сам класс BigBox можешь положить что угодно, текстовые поля и т.п.
Последний раз редактировалось Sneg; 30.08.2006 в 16:18. |
|
|||||
|
Регистрация: Aug 2006
Сообщений: 3
|
Да в общем то ничего не помешало...опыта тут маловато. Спасибо! так работает. С небольшими изменениями.
Вопросы: 1.addListener - не удалось использовать. Он как бы не метод UIComponent. ( Или я то то не так сделал ?) 2. Не очень понял как определить onPress с именем onBoxPress(this)... 3. Общий вопрос... а почему так получается, что определение OnPress метода ( ну или другого ) ведёт к изменению поведения - трансляция событий мыши в чаялды. А сам принцип подложки сработал. Пасиба огромное! |
|
|||||
|
На здоровье
1. addListener(eventListener:IBoxEventListener) - это вариант реализации твоей событийной модели (какая она у тебя я не знаю) я написал, как примерно это может выглядеть. Т.е. к примеру у тебя BigBox слушатель события onBoxPress (реализует интерфейс IBoxEventListener в котором описан метод onBoxPress ), а Box у тебя диспетчер - ты подписываешь BigBox на получение сообщений от Box. Когда происходит событие onPress() у Box - срабатывает событие onBoxPress(box:Box) у BigBox. Таким образом BigBox знает о том что нажали Box и знает на какой именно т.к. Box передает в качестве параметра себя. 3. событие onPress,onRollOver и т.п. определенные в главном мувике, перекрывают события дочерних мувиков. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|