![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 45
|
Задача: нужно, чтобы в текстовом поле появлялись вводимые с клавиатуры русские буквы, даже если это текстовое поле не в фокусе. С латинской раскладкой нет проблем, так как можно считать charcode клавиши, с помощью String.fromCharCode получить ее значение и присвоить его атрибуту data текстового поля, но с кирилицей это не прокатывает, печатается все равно латинский символ. Как быть?
|
|
|||||
|
Была тут где-то такая тема... Кажется, выход только один... всегда ставить фокус на текстовое поле. Проблема в том, что нельзя узнать текущую раскладку клавиатуры. Т.е. если нужен только русский, можно просто сопоставить charCode русскому символу, если возможен еще и английский или другой язык - тут уже проблема.
Правда не уверен, тема была давно, возможно Adobe к настоящему времени уже что-нибудь сделал с этим. Добавлено через 1 час 4 минуты Есть такой вот хак: private var txt:TextField; private function fn():void{ stage.addEventListener(KeyboardEvent.KEY_DOWN, key); stage.addEventListener(KeyboardEvent.KEY_UP,readChar) txt = new TextField() txt.type = TextFieldType.INPUT txt.visible = false; addChild(txt) } private function key(e:KeyboardEvent):void { stage.focus = txt; } private function readChar(e:KeyboardEvent):void { var char:String = txt.text.charAt(0); if (char != '') trace(char); txt.text = ''; } |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Вычислить русский код символа можно исходя из кода клавиши, учитывая нажат ли шифт и капслок. Но это будет работать не у 100% пользователей, так как раскладки могут быть другие.
Если просто сопоставлять коды символов, то тоже придется учитывать капслок и шифт для некоторых английских символов (для точки, запятой и т.п.). |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
public function getRuChar(shiftKey:Boolean, capsLock:Boolean, keyCode:uint):String { if (!shiftKey && !capsLock) return rusChars[keyCode]; else if (shiftKey && !capsLock) return rusCharsShift[keyCode]; else if (!shiftKey && capsLock) return rusCharsCapsLock[keyCode]; else return rusCharsCapsLockShift[keyCode]; } |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 88
|
Напиши функцию перевода с анг. букв в русские?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|