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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 02.05.2007, 16:39
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 71  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
неа, не надоел
Мануал отличный! Я, кстати, много интересного для себя нахожу на сайте http://www.intuit.ru/courses.html -- всем советую.

Старый 02.05.2007, 17:21
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 72  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В ActionScript classes > Key > getAscii (Key.getAscii method) есть один недостаток -- The ASCII values returned are English keyboard values (т.е. какая бы раскладка не была включена, вернется все равно английский аски). Бился над этой проблемой кучу времени. Единсвенный, относительно нормальный, способ, который я придумал -- это английский аски код пропускать через массив.
Код:
this.createTextField("my_txt", 0, 100, 100, 100, 100);
//
var rusLayout:String = ' !Э№;%?э()*+б-ю.0123456789ЖжБ=Ю,"ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯх\\ъ:_ёфисвуапршолдьтщзйкыегмцчняХ/ЪЁ';
var rusLayoutCL:String = ' !э№;%?Э()*+Б-Ю.0123456789жЖб=ю,"ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯХ\\Ъ:_Ёфисвуапршолдьтщзйкыегмцчнях/ъё';
//
var filter:Array = new Array(32);
filter = filter.concat(rusLayout.split(""));
var filterCL:Array = new Array(32);
filterCL = filterCL.concat(rusLayoutCL.split(""));
//
var ascii:Number;
var rusSymbol:String;
var currentFilter:Array;
//
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
	ascii = Key.getAscii();
	//
	if (!Key.isToggled(Key.CAPSLOCK)) {
		currentFilter = filter;
	} else {
		currentFilter = filterCL;
	}
	//
	rusSymbol = currentFilter[ascii];
	//
	my_txt.text = rusSymbol;
};
Key.addListener(keyListener);
//}
Работает только при включенной английской раскладке!!
У меня есть подозрения, что это как то можно обойти при помощи цинка. Есть какие-нибудь мысли по этому поводу?


Последний раз редактировалось udaaff; 02.05.2007 в 17:24.
Старый 02.05.2007, 18:03
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 73  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Уточни: ты автоматическую транслитерацию задумал сделать? Или тебе нужно просто, чтобы принудительно всегда печаталось по русски? Или нужно печатать по русски при реально включенной английской раскладке? Не догоняю..
Цитата:
Работает только при включенной английской раскладке!!
При включенной русской зачем пропускать через массив? И так по русски все будет...Или я чего-то не понимаю? Поясни
А не работает до конца потому, что при смене раскладки Key.getAscii() может для некотрых кнопок возвращать разные значения в отличие от Key.getCode(), кстати, который возвращает код клавиши один и тот же не зависимо от раскладки.
В подмогу вложение.
Вложения
Тип файла: zip keyCode.zip (421 байт, 2557 просмотров)


Последний раз редактировалось alexcon314; 02.05.2007 в 18:23.
Старый 03.05.2007, 01:37
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 74  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
ты своей флэшкой сам ответил на свой вопрос!!
и при русской и при аглийской раскладке возвращаются английский аски!!! Т.е. в любом случае вернется нерусский код
Попрубуй после того как ты считал код нажатой клавиши, вывести русский символ -- ничего не получится!! Как узнать код русской нажатой клавиши? -- вот это я имел ввиду.


Последний раз редактировалось udaaff; 03.05.2007 в 09:37.
Старый 03.05.2007, 12:07
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 75  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код клавиши (не символа) не зависит от раскладки. Просто потому что кнопки на клавиатуре одни и те же.

Старый 03.05.2007, 14:20
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 76  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Неужели это продолжение темы http://flasher.ru/forum/showthread.php?t=92449 ? Значит ли это, что тебе нужно ТОЛЬКО узнать КОД символа на нажатой кнопке в русской раскладке и напечатать его? Тогда попробуй вот это - см. вложение.
Если без цинка. И если это то, что тебе надо.
С цинком должно быть проще - принудительно переключать раскладку на русскую по какому нибудь событию и какие проблемы после этого - я не понимаю.
Вложения
Тип файла: zip keyCode2.zip (1.3 Кб, 61 просмотров)


Последний раз редактировалось alexcon314; 03.05.2007 в 17:55.
Старый 03.05.2007, 18:23
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 77  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
По умолчанию Вдогонку

Забыл "залипание" SHIFT'а сделать. Исправился.
Вложения
Тип файла: zip keyCode3.zip (1.3 Кб, 71 просмотров)

Старый 04.05.2007, 01:25
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 78  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
2 alexcon314 выложи свой код поджалуйста!
флэшки мне мало о чем говорят...

Старый 04.05.2007, 08:31
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 79  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
По умолчанию Код

код во .fla:
Код:
#include "remap.as"
this.createTextField("my_txt", 0, 10, 10, 500, 220);
my_tex.type = "input";
my_txt.multiline = true;
my_txt.border = true;
ke = "";
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
	var code:Number = Key.getCode();
	if (code == 13) {
		my_txt.text += newline;
		return;
	}
	if (code == 32) {
		my_txt.text += " ";
		return;
	}
	if (Key.isDown(Key.SHIFT)) {
		shift = true;
	} else {
		shift = false;
	}
	if (shift && !Key.isToggled(Key.CAPSLOCK)) {
		ke = "0";
	}
	if (!shift && Key.isToggled(Key.CAPSLOCK)) {
		ke = "0";
	}
	if (shift && Key.isToggled(Key.CAPSLOCK)) {
		ke = "";
	}
	if (shift && code == 220) {
		var ke = "0";
	}
	if (!shift && code == 220) {
		var ke = "";
	}
	if (shift && code == 191) {
		var ke = "0";
	}
	if (!shift && code == 191) {
		var ke = "";
	}
	if (shift && code >= 48 && code <= 57) {
		var ke = "0";
	}
	if (!shift && code >= 48 && code <= 57) {
		var ke = "";
	}
	my_txt.text += String.fromCharCode(remap["i" + code + ke]);
	ke = "";
};
Key.addListener(keyListener);
include во вложении
Привязка происходит именно к кодам клавиш, а не к Ascii. В remap.as просто вручную расписаны по кнопкам символы. Все это можно заточить получше. Это всего лишь рабочий вариант.
Косяк: если вручную нарисовать TextField и дать ему тип input - работать будет гораздо хуже. Поможет my_txt.restrict = "^a-z\\A-Z"
Вложения
Тип файла: zip remap.zip (640 байт, 72 просмотров)


Последний раз редактировалось alexcon314; 04.05.2007 в 08:54.
Старый 04.05.2007, 20:31
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 80  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Попытался построить broadcaster-listener события "изменилась раскладка". Вариант с вызовом dll-функции по интервалу из цинка через setInterval или onEnterFrame отпадает, т.к. при коротких интервалах вызова цинк падает. Почему - не выяснял.
Пробовал вариант .onKeyDown (.isDown) c клавишами Ctrl+Shift или Alt+Shift. Установленный в системе способ переключения раскладки клавишами можно о узнать в реестре. С Ctrl куда ни шло. А вот Alt засечь не получается. Тупик.

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

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

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


 


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


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