Keydown в Flex Flex - PullRequest
       40

Keydown в Flex Flex

1 голос
/ 27 мая 2009

У меня есть небольшое приложение в flex, в котором я определил 2 холста. На одном из них я добавил элементы управления, а другой используется для рисования чего-либо, а элементы управления не добавлены:

<mx:Canvas x="0" y="80" width="100%" height="520%" id="Canvas1"/>
<mx:Canvas x="0" y="0" width="100%" height="80" id="Canvas2"/>

Я добавляю событие keydown, обработанное в приложение, но оно срабатывает только после того, как я щелкну мышью на первом Canvas (тот, где были добавлены элементы управления). В противном случае событие не запускается при нажатии клавиш.

Я пробовал несколько вещей: установить фокус на второй холст, добавить обработчик нажатия клавиш в приложение (this), stage, canvas ... К сожалению, я не нашел решения для запуска keydown, где бы фокус.

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Это для flex 4.

<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx"
            name="MyApp"
            width="480" height="480"
            creationComplete="init();">

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[
        public function init():void
        {
            trace("init");
            this.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); 
        }

        private function keyDown(event:KeyboardEvent):void
        {
            trace(event.charCode);
        }       
</fx:Script></s:Application>
0 голосов
/ 27 мая 2009

Первая описанная вами проблема (необходимость щелкнуть мышью перед отправкой событий KeyboardEvents), вероятно, связана с тем, что браузер не фокусирует внимание на самом приложении Flex. Вы можете использовать Javascript в оболочке HTML, чтобы программно сфокусировать приложение Flex на событии «body» элемента «onLoad». Я точно знаю, что это работает в Firefox, и я верю, что это хорошо работает и в IE. Я постараюсь выкопать соответствующий код Javascript.

Что касается второй проблемы, пытались ли добавить обработчик событий в Application.application для перехвата всех событий KeyboardEvents?

...