gnus
17.08.2009, 13:28
добрый день. понадобилось решить такую задачу. надо посылать компоненту на котором фокус клавиатурные сообщения. то есть посылается сообщение с кодом нужного символа и чтобы компонент ловил и отображал этот символ. в общем типа виртуальная клавиатура. сделал такой тест:
<?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 минуту
неужели никто не сталкивался с такой задачей?(
<?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 минуту
неужели никто не сталкивался с такой задачей?(