PDA

Просмотр полной версии : Как получить код вводимых русских букв?


yuriex
12.02.2004, 12:58
Проблема такая:
Нужно обработать вводимые с клавиатуры русские буквы.
Key.getAscii() возвращает код только английских буквы.
А как получить код русских? В любом варианте или в Ascii или в юникоде.
В дальнейшем я их буду обрабатывать:
letter = String.fromCharCode(1041); // для юникода
letter1 = chr(193); // для Ascii

Nox Noctis
12.02.2004, 17:32
http://www.flasher.ru/forum/showthread.php?s=&threadid=44419&highlight=%2Achr%2A

yuriex
12.02.2004, 18:31
Спасибо за быстрый ответ.
trace(chr(a=1103));
trace(chr(255));
trace(chr(255) == chr(a));
тут макромедийцы конечно постарались, ничего не скажешь.
но с этим я как раз раз разобрался.

У меня основная проблемма другая:
как мне получить код вводимых русских букв с клавиатуры?
в любом виде, хоть юникод, хоть ascii.
Key.getAscii() выдает код только латинских букв и спецсиволов.

Nox Noctis
12.02.2004, 19:59
ааа... понятно о чем ты :)

не знаю как сделать получше - я бы сделал по-простому:
en = "qwertyuiop[]asdfghjkl;'zxcvbnm,.";
ru = "йцукенгшщзхъфывапролджэячсмитьбю";
en = en.split("");
ru = ru.split("");
ru_unicode = {};
for (var i = 0; i<en.length; i++) {
ru_unicode["en"+ord(en)] = ru[i];
}
this.onKeyDown = function() {
var ru = ru_unicode["en"+Key.getAscii()];
var en = Key.getAscii();
if (ru.length) {
trace("en : "+en+", ru: "+ru+"("+ord(ru)+")");
} else {
trace("en : "+en+"("+chr(en)+")");
}
};
Key.addListener(this);
[i]Оригинал написал(а) yuriex
trace(chr(a=1103));
trace(chr(255));
trace(chr(255) == chr(a));кстати, в МХ 2004 они это исправили :)
даже если публиковать под шестерку - все равно этот баг уже не срабатывает :)

yuriex
13.02.2004, 12:04
Большое спасибо, Nox Noctis!

Это действительно выход из положения.
Там только в цикле добавил ord(en[i])
for (var i = 0; i<en.length; i++) {
ru_unicode["en"+ord(en[i])] = ru[i];
}
и получил, то что хотел.
:)

единственный минус такого подхода:
не работают буквы б и ю
и при включенной русской раскладке буквы х, ъ, ж, э

Nox Noctis
13.02.2004, 12:15
Оригинал написал(а) yuriex
Это действительно выход из положения.
Там только в цикле добавил ord(en[и])аа... сорри :) это не опечатка кстати и не ошибка.. :) просто при автоматическом форматировании сообщения символы "[и]" воспринялись как начало тега курсива :))

Оригинал написал(а) yuriex
единственный минус такого подхода:
не работают буквы б и ю
и при включенной русской раскладке буквы х, ъ, ж, э
"б" и "ю" не работают только когда ты запускаешь свфку прямо из редактора флэша. сам едактор перехватывает нажатия некоторых клавиш - поэтому до свф они просто не доходят...

а с включенной русской раскладкой мона поморочиться - просто посмотри какие коды там возвращаются и добавь им соответствия в строки en и ru

yuriex
13.02.2004, 12:28
"б" и "ю" не работают только когда ты запускаешь свфку прямо из редактора флэша. сам едактор перехватывает нажатия некоторых клавиш - поэтому до свф они просто не доходят...
Ура! Действительно в swf "б" и "ю" работают.
:)
Еще раз спасибо!

Master Paleva
21.02.2004, 12:00
Я тоже столкнулся с такой проблемой, когда делал одну флешку. Но решил я её таким образом: кождому коду клавиши присваивал значение русской буквы. Довольно длинный скрипт получился и нелепый. Приклепляю свою флешку, чтобы вы могли увидеть это в действии (это архив rar, но переименован в zip).