Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Какая буква нажата (http://www.flasher.ru/forum/showthread.php?t=133858)

Ixanezis 14.12.2009 23:24

Какая буква нажата
 
У меня на stage висит KeyboradEvent. Можно ли как-то определить, какая конкретно буква была нажата? charCode и keyCode говорят что-то не то.. А мне очень хотелось бы конкретно знать какой символ был введён.. П или G например. Спасибо.

udaaff 15.12.2009 00:27

Раскладку пользователя определить невозможно. KeyboardEvent.charCode возвращает только коды символов английской раскладки.

Ixanezis 15.12.2009 00:40

А как же тогда в TextField всё хорошо вводится? Откуда флеш знает, что ему идёт на вход.?

udaaff 15.12.2009 00:56

Почему все так хорошо вводится, я не знаю, и это не имеет никакого значения. Единственный способ узнать какой символ ввел пользователь П или G, это считать его из текстового поля. Можно сделать невидимое поле, повесить на него фокус, и от туда считывать. Правда будет заметно притормаживание + фокус надо на поле будет на этом держать (программно). Не очень хороший вариант.
А чего вы пытаетесь добиться? Какая задача?

Hidest 15.12.2009 17:51

Потому что, какой стоит язык в системе в данный момент, такой и печатается.

Ixanezis 15.12.2009 17:58

Ну да.. Это в TextField так печатается.. А задача... Долго рассказывать, считайте, что мне нужно реализовать свой собственный TextField.. Не наследуясь от него. Разве что от Sprite.

udaaff 15.12.2009 18:20

Могу посоветовать такой вариант:
Сделать переключение раскладок визуальным, т.е. в самой флешке сделать выбор en|ru.
Ну и в зависимости от выбора пользователя, определять введенный им символ (сделать свою таблицу символов русской раскаладки, и определять введенный символ в зависимости от шифта, капслока, кейкода)

Psycho Tiger 15.12.2009 21:06

Ммм...
asciiCode же разный.

udaaff 15.12.2009 21:26

А ascii код в расчет не принимается.

Psycho Tiger 15.12.2009 22:48

Всё бы хорошо, только зачем так извращаться я не понимаю. Смотрим из какого диапазона ascii код и делаем вывод о том, какая раскладка клавиатуры у человека.

udaaff 15.12.2009 23:04

Все бы хорошо, но возвращаются только английские аски :)
А если бы возвращались коды текущей раскладки, то и определять ее не надо было бы.

Psycho Tiger 16.12.2009 00:28

Цитата:

Все бы хорошо, но возвращаются только английские аски
Логично, что если аски не вернулось - значит, русская раскладка :)

udaaff 16.12.2009 00:34

Аски вернется, но английская (при любой раскладке, хоть русской, хоть китайской) =)

Psycho Tiger 16.12.2009 15:19

Да? Что-то я в последнее время некомпетентен :D

Xero201 16.12.2009 17:17

А почему именно KeyboardEvent.charCode?
KeyboardEvent.keyCode вроде нормально все различает
(вот только почему-то его код для букв на 32 отличается от String.charCodeAt, хотя для цифр они совпадают
например при нажатии "b", KeyboardEvent.keyCode вернет 66, а String.charCodeAt 98)


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

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