PDA

Просмотр полной версии : Фокус ввода и Selection


Vasyaga
05.02.2009, 10:43
Недавно в одном проекте столкнулся со следующей проблемой:
Пусть я установил фокус ввода в какой-либо компонент на сцене, например TextInput. Затем я щелкаю на каком-либо MovieClip (не имеющем фокус ввода) и отслеживаю изменение фокуса в событии объекта Selection.onSetFocus. Получаю странный результат - фокус меняется сначала на null при нажатии мыши, а при отпускании возвращается в TextInput. Хотя по идее фокус ввода не должен меняться!!!
Всё тщательно проверил - нигде в коде нет явных обращений ни к Selection.setFocus ни к FocusManager.setFocus и уж тем более нигде нет кода setFocus(null).
Гуру, помогите, в чем может быть загвоздка? Уже вырвал все волосы :eek:.
Платформа - Flash CS3, ActionScript 2.0.

Svi_stok
06.02.2009, 22:58
Не совсем понятно можно взглянуть на код

Vasyaga
06.02.2009, 23:11
Не совсем понятно можно взглянуть на код

Спасибо, уже разобрался :)

На будущее расскажу всем:
Необходимо было сделать нечто вроде текстового редактора на AS2. Причем форматирование текстовых полей может быть любым.
А в качестве контролов для управления шрифтом, размером шрифта - стандартные компоненты - combo box и numeric stepper (достались от предыдущих разработчиков).
Соответственно если я хочу изменить размер выделенного фрагмента, то я щелкаю на numericStepper, моё текстовое поле теряет фокус ввода и его получает numericStepper. Причем получает его не в текущем, а в следующем кадре или вообще через несколько кадров. Выделение текста теряется, но я его запомпнаю, выставляю фокус ввода назад в текстовое поле по setInterval, выставляю ему Selection и TextFormat.
Вся загвоздка в том, что невозможно отследить как в NumericStepper введено значение - с клавиатуры или при помощи нажатия кнопок (по крайней мере я не знаю как :) ) То есть если я жму кнопку и держу нажатой, то срабатывает событие 'change', фокус уходит и вместе с ним моя нажатая кнопка становится неактивной!
Надеюсь не очень туманно объяснил :).
В итоге - буду писать свой numeric stepper, в котором можно будет узнать откуда сгенерировалось событие - от кнопок или прямым вводом с клавиатуры.
Может кто-нибудь знает как по-другому?