Flex: имитация нажатия клавиш

Я создаю виртуальную клавиатуру для приложения Flex с сенсорным экраном и пытаюсь имитировать нажатие клавиши, отправляя KeyboardEvent. Я написал функцию-обработчик, чтобы отслеживать событие и действовать соответствующим образом. Пока все хорошо ... но это начинает усложняться, так как мне нужно управлять сфокусированными textInputs (легко), положением курсора в этих полях (не так просто) и т. Д. Теперь, если бы только был способ на самом деле отправьте событие KeyboardEvent, которое Flex будет интерпретировать как настоящее нажатие клавиши, все эти проблемы исчезнут ... Возможно ли это?


person Tiago Pereira    schedule 26.08.2009    source источник
comment
Я не уверен, что полностью понимаю здесь поток управления. Таким образом, пользователь коснется (то есть щелкнет) одной из кнопок на клавиатуре. Это сгенерирует событие щелчка, из которого вы сгенерируете KeyboardEvent, которое затем скажет текстовому полю добавить этот символ и переместить курсор. Это правильно? И место, где у вас возникла проблема, - это когда вы генерируете KeyboardEvent, текстовое поле не обновляется?   -  person Dan    schedule 26.08.2009
comment
Да, это правильно. Я могу это сделать, но с помощью обработчика KeyboardEvent ... если вместо этого я просто отправлю событие (с фокусом на TextInput), ничего не произойдет.   -  person Tiago Pereira    schedule 26.08.2009
comment
На какой компонент вы отправляете KeyboardEvent? Я думаю, чтобы все работало правильно, вам нужно отправить событие в текстовый компонент с фокусом, то есть: myFocusedTextComponent.dispatchEvent (myNewlyCreatedKeyboardEvent)   -  person Dan    schedule 26.08.2009
comment
Мое решение не сработает, см. Ответ Питера ниже.   -  person Dan    schedule 26.08.2009


Ответы (1)


TextInput не использует KeyboardEvent / TextEvent для ввода текста, он использует внутренние объекты Flash TextField, которые взаимодействуют с Flash Player / Keyboard.

KeyboardEvent используются для включения уведомления о произошедшем событии клавиатуры.

Чтобы имитировать клавиатуру, вам нужно будет создать класс, который при получении KeyboardEvent будет соответственно изменять текстовое свойство TextInput и позицию курсора.

Alex Harui написал аналогичное сообщение об этом сообщении FlexCoders

person Peter Dolukhanov    schedule 26.08.2009