首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在flex Flex中按键

在flex Flex中按键
EN

Stack Overflow用户
提问于 2009-05-27 17:30:55
回答 2查看 2.7K关注 0票数 1

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

代码语言:javascript
复制
<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上,将keydown处理程序添加到应用程序(This)、stage、canvas……不幸的是,无论焦点在哪里,我都没有找到触发快捷键的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2010-12-17 00:18:54

这是针对flex 4的。

代码语言:javascript
复制
<?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>
票数 1
EN

Stack Overflow用户

发布于 2009-05-27 17:40:54

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

至于第二个问题,有没有尝试过在Application.application中添加一个事件侦听器来捕获所有的KeyboardEvents?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/917034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档