Apache flex flex中的向下键

Apache flex flex中的向下键,apache-flex,events,event-handling,keyboard,keydown,Apache Flex,Events,Event Handling,Keyboard,Keydown,我在flex中有一个小应用程序,其中定义了两个画布。其中一个我添加了控件,另一个用于绘制某些东西,但没有添加控件: <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事件,但只有在我用鼠标单击第一个画布(添加了控件的画布)后才

我在flex中有一个小应用程序,其中定义了两个画布。其中一个我添加了控件,另一个用于绘制某些东西,但没有添加控件:

<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事件,但只有在我用鼠标单击第一个画布(添加了控件的画布)后才会触发它。否则,按键时不会触发该事件


我尝试了几件事:在第二个画布上设置焦点,在应用程序(这个)、阶段、画布中添加键控处理程序。。。不幸的是,无论焦点在哪里,我都没有找到触发keydown的解决方案。

您描述的第一个问题(在调度任何键盘事件之前必须单击鼠标)可能是由于浏览器没有将焦点放在Flex应用程序本身。您可以在HTML包装器中使用Javascript以编程方式将焦点放在“body”元素的“onLoad”事件上的Flex应用程序上。我确信这在Firefox中是可行的,我相信在IE中也是可行的。我将尝试挖掘相关的Javascript代码


至于第二个问题,您是否尝试向Application.Application添加事件侦听器以捕获所有键盘事件?

您描述的第一个问题(在发送任何键盘事件之前必须单击鼠标)可能是由于浏览器没有将焦点放在Flex应用程序本身。您可以在HTML包装器中使用Javascript以编程方式将焦点放在“body”元素的“onLoad”事件上的Flex应用程序上。我确信这在Firefox中是可行的,我相信在IE中也是可行的。我将尝试挖掘相关的Javascript代码

至于第二个问题,您是否已尝试将事件侦听器添加到Application.Application以捕获所有键盘事件?

这是针对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>

这是针对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>