Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.05.2012, 23:25
Gin вне форума Посмотреть профиль Отправить личное сообщение для Gin Найти все сообщения от Gin
  № 1  
Ответить с цитированием
Gin

Регистрация: Jan 2012
Сообщений: 45
По умолчанию Как получить код символов кирилицы, вводимых с клавиатуры

Задача: нужно, чтобы в текстовом поле появлялись вводимые с клавиатуры русские буквы, даже если это текстовое поле не в фокусе. С латинской раскладкой нет проблем, так как можно считать charcode клавиши, с помощью String.fromCharCode получить ее значение и присвоить его атрибуту data текстового поля, но с кирилицей это не прокатывает, печатается все равно латинский символ. Как быть?

Старый 22.05.2012, 00:34
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 2  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Была тут где-то такая тема... Кажется, выход только один... всегда ставить фокус на текстовое поле. Проблема в том, что нельзя узнать текущую раскладку клавиатуры. Т.е. если нужен только русский, можно просто сопоставить charCode русскому символу, если возможен еще и английский или другой язык - тут уже проблема.
Правда не уверен, тема была давно, возможно Adobe к настоящему времени уже что-нибудь сделал с этим.

Добавлено через 1 час 4 минуты
Есть такой вот хак:
Код AS3:
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 = '';			
		}

Старый 22.05.2012, 02:20
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Вычислить русский код символа можно исходя из кода клавиши, учитывая нажат ли шифт и капслок. Но это будет работать не у 100% пользователей, так как раскладки могут быть другие.
Если просто сопоставлять коды символов, то тоже придется учитывать капслок и шифт для некоторых английских символов (для точки, запятой и т.п.).

Старый 22.05.2012, 02:39
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 4  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
udaff, есть пример?

Старый 22.05.2012, 02:56
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS3:
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];
}
rusChars, rusCharsShift, rusCharsCapsLock, rusCharsCapsLockShift - массивы в которых коду клавиши соответствует определенный русский символ.

Старый 22.05.2012, 03:04
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 6  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
А, вы об этом... Я было подумал, что можно сопоставить keyCode с учетом текущей языковой раскладки.

Старый 22.05.2012, 16:37
Mkey вне форума Посмотреть профиль Отправить личное сообщение для Mkey Найти все сообщения от Mkey
  № 7  
Ответить с цитированием
Mkey
 
Аватар для Mkey

Регистрация: Apr 2012
Сообщений: 88
Напиши функцию перевода с анг. букв в русские?

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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