Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   посылка клавиатурнычх сообщений (http://www.flasher.ru/forum/showthread.php?t=128779)

gnus 17.08.2009 13:28

посылка клавиатурнычх сообщений
 
добрый день. понадобилось решить такую задачу. надо посылать компоненту на котором фокус клавиатурные сообщения. то есть посылается сообщение с кодом нужного символа и чтобы компонент ловил и отображал этот символ. в общем типа виртуальная клавиатура. сделал такой тест:
Код AS3:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
                <![CDATA[
                        private function click():void
                        {
 
                                var event:KeyboardEvent=new KeyboardEvent(KeyboardEvent.KEY_DOWN);
                                event.charCode=97;
                                event.keyCode=65;
 
                                if(getFocus())getFocus().dispatchEvent(event);
                        }
 
                        private function hKeyDown(event:KeyboardEvent):void
                        {
                                trace(event);
                        }
                  ]]>
        </mx:Script>
        <mx:TextInput x="23" y="10" keyDown="hKeyDown(event)" keyUp="hKeyDown(event)"/>
        <mx:Button label="Button" x="82" y="113" click="click()" focusEnabled="false"/>
</mx:Application>

при нажатии на кнопку в трейс выводит такое:
Код:

[KeyboardEvent type="keyDown" bubbles=true cancelable=false eventPhase=3 charCode=97 keyCode=65 keyLocation=0 ctrlKey=false altKey=false shiftKey=false]
видно, что текстинпут ловит сообщение, но почему-то не пишет символ.
при чём если я нажму на клавиатуре символ "a", то сообщение приходит совершенно аналогичное, но символ отображается.
в чём может может быть проблема?

Добавлено через 5 часов 1 минуту
неужели никто не сталкивался с такой задачей?(

wvxvw 17.08.2009 19:41

Не пробовал, но как мне кажется, текстовому полю логичнее было бы посылать "textInput" событие...

gnus 17.08.2009 21:33

там будет не только текстовое поле, а вообще абстрактный компонент. например HTML в AIR. да и с textInput тоже не работает.

wvxvw 17.08.2009 22:29

Ну значит текстовое поле не реагирует на события, которые диспатчит - как бы и не обязано вовсе :)

gnus 17.08.2009 23:19

а можно ли сделать то, что мне надо вообще? если да, то каким способом

wvxvw 18.08.2009 00:27

Ну, подпишитесь на события клика у нарисованых кнопок, и, вы же и так знаете, на какую кнопку пользователь "кликнул мышкой", просто добавьте ее код в текст текстового поля :)

gnus 18.08.2009 00:57

всё это не то(
мне надо диспатчить в компонент HTML в AIR.

wvxvw 18.08.2009 04:40

А в чем разница? в ХТМЛе создаете функцию printLetter(letter) {...}
которую вы вызываете и по событию и вручную... где / что не получается?

gnus 09.09.2009 13:05

ХТМЛ не мой. он загружается извне. например http://ya.ru. вот в его поле поиски мне и надо затолкать что-либо. например...

wvxvw 09.09.2009 13:31

Проще в загруженую страницу вписать нужную яваскрипт функцию.


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

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