Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как получить код вводимых русских букв? (http://www.flasher.ru/forum/showthread.php?t=54656)

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/showthre...ight=%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[i])] = 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);

Цитата:

Оригинал написал(а) 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

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


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

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