`
yunzhongxia
  • 浏览: 640489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决按下空格键执行上一次鼠标点击事件

    博客分类:
  • flex
阅读更多

先来看下一段代码的执行效果。代码如下:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
    <mx:Label text="点击保存按钮,鼠标不要移动,按下空格键,观察下面点击事件执行次数"/>
	<mx:Button label="保存" click="myClick(event)" />
	<mx:TextInput id="txt" />
	<mx:Script>
		<![CDATA[
			private var num:int=0;//事件执行次数
			private function myClick(event:MouseEvent):void{
				num=num+1;
				txt.text=""+num;
			}
		]]>
	</mx:Script>
</mx:Application>

 

 

 鼠标点击一下“保存”按钮,执行一次鼠标点击事件,保持鼠标的位置不动,按下空格键,再次执行鼠标点击事件。OK,看到Flex诡异的现象了吧。

 

 先来说下原因,鼠标点击按钮后焦点会落在此按钮上,此时按下空格键,空格键的默认事件相应有焦点的事件。因此就执行了上一次的按钮的点击事件了。Flex你有多少的默认呀?要不是测试人员发现,恐怕我一直都不会知道。

 

 下面这看看解决方法:

 1 对症下药。重置光标。

 

setFocus () 方法   

public function setFocus():void


设置此组件的焦点。组件可能依次将焦点传递给子组件。 

注意:使用此方法设置焦点时,只有 TextInput 和 TextArea 控件加亮显示。当用户按 Tab 键切换控件时,所有控件都加亮显示。


 

2 杜绝隐患。拒绝接收焦点。

 

mouseFocusEnabled 属性   

mouseFocusEnabled:Boolean  [] 


单击时是否可接收焦点。如果值为 false,则焦点将转换到已将 mouseFocusEnable 设置为 true 的第一个父项。例如,您可以将某个 Button 控件的此属性设置为 false,这样可使用 Tab 键将焦点移动到该控件,但在单击该控件时不会使其获得焦点。 

默认值为 true.


 

 上面两个方法都是UIComponent类的方法,Flex的可视化组件都是继承自该类,因此都可以使用上面的方法。

 

修改后的代码如下:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
    <mx:Label text="点击保存按钮,鼠标不要移动,按下空格键,观察下面点击事件执行次数"/>
	<mx:Button label="保存" click="myClick(event)"  mouseFocusEnabled="false"/>
	<mx:TextInput id="txt" />
	<mx:Script>
		<![CDATA[
			private var num:int=0;//事件执行次数
			private function myClick(event:MouseEvent):void{
				num=num+1;
				txt.text=""+num;
				this.setFocus();
			}
		]]>
	</mx:Script>
</mx:Application>

 

0
0
分享到:
评论
2 楼 yunzhongxia 2011-12-07  
梦心缘 写道
按下tab键时,按钮还是会获得焦点,按下空格键还是会执行,没有彻底解决问题!

你怎么测试的,是可以的。
1 楼 梦心缘 2011-12-07  
按下tab键时,按钮还是会获得焦点,按下空格键还是会执行,没有彻底解决问题!

相关推荐

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    13.按着鼠标左键将其拖到设计窗口上,如下图。 14.我们双击它,并将其内容改为helloworld。 15.我们在右下角的属性栏里将字体大小由9 改为15。 16.我们拖动标签一角的蓝点,将全部文字显示出来。 17.再次按下运行...

    易语言程序免安装版下载

    修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的BUG。 6. 修改高级表格支持库,解决插入行/插入列在未指定行号/列号的情况下插入位置不正确的BUG。 7. 修改文本语音转换支持库,增加“机读...

    excel的使用

    输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。(6) 不连续单元格填充同一数据选中一个...

    MAPGIS地质制图工具

    2、先按V键,接着拉框选择两条等高线,然后执行菜单 “1辅助工具\四点插入等高线”,依次在两条等高线上点击,当点击完第四个点时,弹出等高线参数设置对话框后,设置同上(此略)。 图元筛选 注意问题: 1、 包括...

    会计理论考试题

    A、在“编辑”菜单中选“删除”命令 B、按Delete键 C、单击右键,选“删除”命令 D、在文件菜单中选“删除”命令 12.机器语言是__C___。 A、源程序 B、用符号代替的高级语言 C、CPU能接受的基本指令 D、接近自然...

    editplus 代码编辑器html c++ jsp css

    单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 【6】软件技巧——键盘记录的注意...

    arcgis工具

    单击OK,单击Tools中的Hyperlink按钮,将鼠标指移到一要素上并单击以显示其超链接。 28.Arcmap中的SQL语言 当查询ArcInfo coverages, shape文件, INFO表以及dBASE表时,SQL表达式中的字段名必须用双引号扩起。如:...

    计算机应用技术(实用手册)

    进入后,你可以用方向键移动光标选择CMOS设置界面上的选项,然后按Enter进入副选单,用ESC键来返回上一级菜单,用PAGE UP和PAGE DOWN键来选择具体选项,F10键保留并退出BIOS设置。 1.STANDARD CMOS SETUP(标准...

    delphi 开发经验技巧宝典源码

    0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算函数 67 0099 使用Abs函数返回指定数值的绝对值...

    delphi 开发经验技巧宝典源码06

    0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算函数 67 0099 使用Abs函数返回指定数值的绝对值...

    EditPlus 2整理信箱的工具

    单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 【6】软件技巧——键盘记录的注意...

    Editplus 3[1].0

    单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 【6】软件技巧——键盘记录的注意...

    注册表修改大全(作者:Sunny)

    将“开始”菜单下的“关闭系统”禁止,要想关闭电脑只能靠两次Ctrl+Alt+Del或机箱上的Reset键了。打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,选择“新建”的“DWORD”...

    EditPlus 3.31 Build 860 简体中文版

    * 修正: 当 "另存为"、并在文件名称输入框点击鼠标右键时, 弹出英文菜单的问题 (详见下) [0427] * 修正: 参数设置素材目录一处翻译错误 [0315] * 修正: '首选项'-&gt;'常规' 的 '使用 TR1 正则表达式' 选项显示位置不...

    EditPlus 3.31 Build 1129

    * 修正: 当 "另存为"、并在文件名称输入框点击鼠标右键时, 弹出英文菜单的问题 (详见下) [0427] * 修正: 参数设置素材目录一处翻译错误 [0315] * 修正: '首选项'-&gt;'常规' 的 '使用 TR1 正则表达式' 选项显示位置不...

    C++ MFC实现飞机大战游戏

     (1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。  (2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正CheckBox控件的CheckedChanged事件会被触发两次的BUG(Data PostBack-&gt;AutoPostBack, Event PostBack-&gt;EnablePostBack)。 -为TextBox,TextArea,DatePicker,NumberBox,TriggerBox等控件增加AutoPostBack属性...

    Altium Designer Beta 19.0.10完整版安装包+安装教程+和谐文件

    将组件的手动解决方案从一个项目BOM导入另一个项目。 23999 修复了项目属性的变化未传递到BOM输出的问题(BC:9580 ; 7072)。 24029 向云组件数据添加了新的“供应商包装”参数,以区分制造商的“包装”参数(BC:...

Global site tag (gtag.js) - Google Analytics