首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex Catch Keydown

Flex Catch Keydown
EN

Stack Overflow用户
提问于 2010-04-07 10:55:07
回答 4查看 1.4K关注 0票数 1

我希望在我的应用程序中全局处理keydown事件,并因此将事件处理程序添加到显示列表中最顶部的DisplayObject。但是,该事件似乎不会触发,除非光标焦点位于文本框或Datagrid等上。

如何让应用程序全局地处理按键?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-07 11:02:30

stage.addEventListener(...)

票数 1
EN

Stack Overflow用户

发布于 2011-07-20 15:18:43

作为对上述OP注释的响应,这里介绍了如何正确地将其挂钩,即在应用程序的creationComplete事件中:

代码语言: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" minWidth="955" minHeight="600"
               creationComplete="initApp();">

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.managers.SystemManager;

            public function initApp():void {
                systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown)
            }

            public function onKeyDown(event:KeyboardEvent):void {
                pressedKey.text = event.charCode.toString();
            }           
        ]]>
    </fx:Script>

    <mx:Label x="486" y="63" text="You pressed: "/>
    <mx:Label id="pressedKey" x="577" y="58" width="122" text=""/>
</s:Application>
票数 2
EN

Stack Overflow用户

发布于 2010-04-07 16:57:45

首先,在flex应用程序获得焦点之前,您不会检测到任何击键。您可以通过在启动时调用js脚本自动完成此操作,该脚本将焦点设置在应用程序上

完成后,我建议您在systemManager上添加您的关键侦听器。这样做将允许您全局处理keydown事件。

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

https://stackoverflow.com/questions/2589724

复制
相关文章

相似问题

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