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