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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2006, 15:17
YuryS вне форума Посмотреть профиль Отправить личное сообщение для YuryS Найти все сообщения от YuryS
  № 1  
Ответить с цитированием
YuryS

Регистрация: Aug 2006
Сообщений: 3
По умолчанию click на MovieClip проблема

ПРивет, может кто подскажет как быть вот с чем:

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...

Старый 30.08.2006, 16:10
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 2  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Что мешает создать класс BigBox, в нем есть экземпляр Box (box_instance) - и обработчик событий
Код:
onBoxPress(box_instance:Box):Void;
А самому box_instance добавляешь слушателя
Код:
box_instance.addListener(bigBox_instance):Void;
В Box определяешь событие onPress() на рассылку всем слушателям (если с ним что-то из вне делать)
Код:
onBoxPress(this)
А в сам класс BigBox можешь положить что угодно, текстовые поля и т.п.


Последний раз редактировалось Sneg; 30.08.2006 в 16:18.
Старый 30.08.2006, 18:13
YuryS вне форума Посмотреть профиль Отправить личное сообщение для YuryS Найти все сообщения от YuryS
  № 3  
Ответить с цитированием
YuryS

Регистрация: Aug 2006
Сообщений: 3
Да в общем то ничего не помешало...опыта тут маловато. Спасибо! так работает. С небольшими изменениями.

Вопросы:
1.addListener - не удалось использовать. Он как бы не метод UIComponent. ( Или я то то не так сделал ?)
2. Не очень понял как определить onPress с именем onBoxPress(this)...

3. Общий вопрос... а почему так получается, что определение OnPress метода ( ну или другого ) ведёт к изменению поведения - трансляция событий мыши в чаялды.
А сам принцип подложки сработал. Пасиба огромное!

Старый 30.08.2006, 19:09
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 4  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
На здоровье
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, время: 17:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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