Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 火花按钮捕获键关闭(空格键)事件_Actionscript 3_Apache Flex_Air_Flex4 - Fatal编程技术网

Actionscript 3 火花按钮捕获键关闭(空格键)事件

Actionscript 3 火花按钮捕获键关闭(空格键)事件,actionscript-3,apache-flex,air,flex4,Actionscript 3,Apache Flex,Air,Flex4,更新:显然这是 按钮控件按空格键激活按钮控件。要取消激活按钮,请按Tab键将焦点移开 在释放空格键之前单击按钮控件 我想它可以通过编译器指令关闭: 问题:是否有任何理由火花按钮会捕捉关键事件,特别是“空格键”关键事件 背景:我继承并维护了一个在Flex 4.6中完成的大型遗留项目。我看到火花按钮有一种奇怪的行为。本质上,一旦按钮被点击(即给定焦点),一个keyEvent(空格键)将触发连接到按钮的点击事件处理程序 奇怪吧 按钮在MX:Module内的MXML(以下)中定义。模块将关键事件侦听器

更新:显然这是

按钮控件按空格键激活按钮控件。要取消激活按钮,请按Tab键将焦点移开 在释放空格键之前单击按钮控件

我想它可以通过编译器指令关闭:


问题:是否有任何理由火花按钮会捕捉关键事件,特别是“空格键”关键事件

背景:我继承并维护了一个在Flex 4.6中完成的大型遗留项目。我看到火花按钮有一种奇怪的行为。本质上,一旦按钮被点击(即给定焦点),一个keyEvent(空格键)将触发连接到按钮的点击事件处理程序

奇怪吧

按钮在
MX:Module
内的
MXML
(以下)中定义。模块将关键事件侦听器连接到后台,但这些侦听器的事件处理程序不使用按钮:

this.stage.addEventListener(KeyboardEvent.KEY_DOWN, echoKeyDownHandler);
this.stage.addEventListener(KeyboardEvent.KEY_UP, echoKeyUpHandler);
如果我在按钮的事件处理程序中放入一条跟踪语句,以便在出现这种奇怪行为时检查事件类型,则该类型将报告为
单击
。我在文档中没有看到关于捕获这样的关键事件的任何内容

   <s:Button id="toggleBtn"
     label="Editor" 
     click="toggleBtn_clickHandler(event)" 
      x="943" y="8"/>

这在Flex中很正常。您还应该能够使用
键浏览交互元素<代码>
通常起到单击的作用。你可以通过以下两种方法来避免这种情况

a) 按下按钮后,将焦点设置为另一个对象

b) 通过检查按键按下的属性

两个都有点老套。我不确定是否可以在Flex中完全打开键盘导航

[edit 1]我只是在想,如果像这样简单地覆盖默认键盘处理程序是没有帮助的:

override protected function keyDownHandler(evt:KeyboardEvent):void {}
这是UIComponent继承的。您需要创建一个自己的组件来扩展s:Button。一个小缺点

[edit 2]我无法停止思考这个问题,即使我在2-3年前停止使用Flex。所以我在谷歌上搜索了一下,发现了这个堆栈溢出帖子:
这在Flex中是很正常的。您还应该能够使用
键浏览交互元素<代码>
通常起到单击的作用。你可以通过以下两种方法来避免这种情况

a) 按下按钮后,将焦点设置为另一个对象

b) 通过检查按键按下的属性

两个都有点老套。我不确定是否可以在Flex中完全打开键盘导航

[edit 1]我只是在想,如果像这样简单地覆盖默认键盘处理程序是没有帮助的:

override protected function keyDownHandler(evt:KeyboardEvent):void {}
这是UIComponent继承的。您需要创建一个自己的组件来扩展s:Button。一个小缺点

[edit 2]我无法停止思考这个问题,即使我在2-3年前停止使用Flex。所以我在谷歌上搜索了一下,发现了这个堆栈溢出帖子:

哦,是的,
键盘按下
是受保护的,因此它只能在扩展s:Button-my fault的自定义组件内工作。这与您的问题没有100%的关系,但也要检查属性tabEnabled和tabFocusEnabled。所以你至少可以摆脱导航。我想Adobe放弃Flex是有原因的;-)哦,是的,
keyboardPressed
是受保护的,因此它只能在扩展s:Button-my fault的自定义组件中工作。这与您的问题没有100%的关系,但也要检查属性tabEnabled和tabFocusEnabled。所以你至少可以摆脱导航。我想Adobe放弃Flex是有原因的;-)