keydown във flex Flex

Имам малко приложение във 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"/>

Добавям събитие за натискане на клавиши, обработено към приложението, но то се задейства само след като щракна с мишката върху първото платно (това, където са добавени контроли). В противен случай събитието не се задейства при натискане на клавиши.

Опитах няколко неща: да задам фокус върху второто платно, да добавя манипулатора за натискане на клавиши към приложението (това), етап, платно... За съжаление не намерих решение за задействане на натискане на клавиши без значение къде е фокусът .


person Community    schedule 27.05.2009    source източник


Отговори (2)


Това е за 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>
person viphak    schedule 16.12.2010

Първият проблем, който описвате (трябва да щракнете с мишката, преди да бъдат изпратени KeyboardEvents), вероятно се дължи на това, че браузърът не поставя фокус върху самото приложение Flex. Можете да използвате Javascript в HTML обвивката, за да фокусирате програмно приложението Flex върху събитието „onLoad“ на елемента „body“. Знам със сигурност, че това работи във Firefox и вярвам, че работи добре и в IE. Ще се опитам да изровя съответния Javascript код.

Що се отнася до втория проблем, опитахте ли да добавите слушател на събития към Application.application за улавяне на всички KeyboardEvents?

person cliff.meyers    schedule 27.05.2009