![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Нет все гораздо проще. Каждый раз как нажимается кнопка производится поиск в файле xml настроек для текущей раскладки. На каждую клавишу завел такую строчку
где id - код клавиши k1 -клавиша без шифта k2 - клавиша с шифтом с - флаг для отключения CAPS. Там где флаг задан 1 состояние CapsLock не анализируется для получения клавиши. Шифт виртуальный работает по принципу один раз нажали, после ввода текста он выключается. CAPS до тех пор пока его не выключат. А вообще виртуальная клавиатура отлавливает на входе событие KeyboardEvent.KeyDown и обрабатывает его прерывая дальнейшее распространение. По коду клавиши вызвавшей событие ищем в файле xml строку настройки. Определяем состояние шифт в переменную. После проверяем флаг "с" и состояние Caps, если необходимо меняем состояние в переменной шифт. Ну а дальше просто, если шифта нет берем k1, а если есть то k2. Таким образом пользователь работает как с реальной клавиатурой, так и с виртуальной одновременно. Shift при этом определяется состояние нажатый если он нажат на одной из клавиатур (реальной или виртуальной)Единственное с чем ничего не смог сделать это переключение раскладки и CAPS. Flash не дает возможности менять их программно. Поэтому раскладка для ввода по умолчанию берется та, которая активна в данный момент на виртуальной клавиатуре. При этом сделал что с помощью реальной клавиатуры можно менять значения: CapsLock реальный меняет регистр на виртуальной клавиатуре, а Ctrl+Shift меняет раскладку (Alt+Shift не работает потому что alt используется плеером или браузером для горячих клавиш)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Dec 2008
Адрес: Лапландия
Сообщений: 67
|
SunShadow
Я тебе со 100% уверенностью скажу тач отлично работает с Fleshoм. Так как нажатия пльцем соответсвует нажатию левой кнопки мыши. Добавлено через 5 минут SunShadow У меня в принципе подобная задача стоит, только мне не нужно заморачиваться на шифтах и CapsLockах. Мне нужно просто английская клава. Есть более простой вариант реализации без xml. В принципе каждой кнопке можно назначить функцию но это получиться маразм. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
s_8000 давал ссылку на то как делают другие, там простой вариант вполне подходящий для твоих целей)
В любом случае каждой кнопке придется назначать функцию. Я делал это через наследников класса, у всех прописывал в главном методе вызов dispatchEvent с разными кодами и флагами. Можно спрятать кнопку раскладки и работать только с одной. Пусть лучше код будет гибче, вдруг в будущем придется расширять.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Dec 2008
Адрес: Лапландия
Сообщений: 67
|
блин конечно дурацкий вопрос, а не можешь мне скинуть свой рабочий проект
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
боюсь у тебя он не будет работать, он заточен под движок.
Необходимо: 1) Получить разрешение от клиента на предоставление; 2) Модифицировать под твою задачу. В общем то задача не сложная, но требует времени которого к сожалению сейчас крайне мало. И самое главное не думаю что заказчик даст добро.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Dec 2008
Адрес: Лапландия
Сообщений: 67
|
думаю точно закзчику это не понравиться, лано попробую чтонибудь налабать. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Я через неделю буду дополнять код по проекту коментариями, могу как закончу выслать классы по виртуальной клавиатуре. Только работать не будет, потому как требуется движок (загрузка и настройка свойств вынесена в отдельные модули)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Dec 2008
Адрес: Лапландия
Сообщений: 67
|
![]() SunShadow Если интеренсно я решил свою задачу вот таким простым ламерским способом A.addEventListener(MouseEvent.CLICK, WkeyDownHandler); B.addEventListener(MouseEvent.CLICK, WkeyDownHandler); function WkeyDownHandler(event:MouseEvent){ switch (event.target.name){ case 'A':rewrite('Привет'); break; case 'B':rewrite('Вася'); break; } } function rewrite(st:String){ txt.appendText(st); } |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Это вариант если вам нужно сделать быстро и в дальнейшем вы эту клаву больше развивать не будете.
Передо мной стояла задача чтобы помимо виртуальной клавиатуры можно было одновременно работать с реальной. То есть я могу щелкнуть по клавише на виртуальной (например переключить язык) а дальше набирать на реальной и в любой момент опять переключиться на виртуальную, результат будет тот же самый. Одним словом я делал модуль, чтобы его можно было в дальнейшем добавлять в любой проект.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 05.06.2009 в 11:01. Причина: природная грамотность |
|
|||||
|
Регистрация: Dec 2008
Адрес: Лапландия
Сообщений: 67
|
конечно я согласен если передо мной стояла сложная задача пришлось бы выкручиваться, на данном этапе у меня уже утвержденное задание и клава останется неизменной, так что мне проще ))))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|