`
yunzhongxia
  • 浏览: 647349 次
  • 性别: 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键时,按钮还是会获得焦点,按下空格键还是会执行,没有彻底解决问题!

相关推荐

    软件编程(Scratch)等级考试试卷(四级)模拟题附答案

    第4题:多次按空格键执行以下代码,绝对不会出现的结果是?( ) A、铅笔 B、橡皮擦 C、钢笔 D、刨笔刀 *本题考察学生对基本编程概念的理解,特别是对图形和绘图的理解。 第5题:自定义一个判断质数的积木,其中...

    autoclicker鼠标自动点击开源程序(C#)非常好用

    标题中的“autoclicker鼠标自动点击开源程序(C#)”是指一个使用C#编程语言编写的自动化点击工具,它的主要功能是模拟鼠标点击,为用户节省手动操作的时间。这个程序是开源的,意味着其源代码对公众开放,允许用户...

    计算机鼠标键盘操作.pptx

    2. 单击操作:轻按鼠标左键,通常用于选择或激活项目。 3. 双击:快速连续两次点击鼠标左键,常用于打开文件或文件夹。 4. 右击:点击鼠标右键,通常会弹出一个关联上下文菜单,提供更多的操作选项。 5. 拖动:按住...

    键盘快捷键大全

    **Shift+空格键**:可以切换输入法的全角/半角模式,如在智能ABC或极点五笔中使用。 **简单的禁用自动播放**:插上U盘时按住SHIFT键可防止自动播放功能启动,防止病毒或未经授权的软件自动安装。 **选文件时单击一...

    少儿scratch编程项目源代码文件案例素材-弹跳游戏.zip

    8. **用户输入**:玩家可能会通过键盘或鼠标控制角色,这就需要用到Scratch的“当按下空格键”或“当鼠标按钮被点击”等监听器。 9. **控制流**:游戏中的控制流可能包括分支(条件语句)和序列(按顺序执行指令)...

    键盘按键功能大全.docx

    1. **F1键**:当用户在使用某个程序或Windows操作系统时遇到问题,按下F1键会弹出相关帮助内容,帮助用户解决疑问。 2. **F2键**:如果选中了一个文件,按F2键可以直接进入重命名模式,方便快捷地修改文件名。 3. ...

    Scratch少儿编程月度测试题5.pdf

    A选项的代码会在按下空格键时立即切换造型,实现连续按空格键能切换不同造型的效果。 7. **事件处理与声音播放**:当角色与其他角色或背景碰撞时,可以触发特定事件。A选项的代码会在小猫碰到小球时播放声音,而...

    WIN7旗舰版高级版快捷键大全.pdf

    - 按Shift 5次:启用或关闭粘滞键,允许连续按下按键而无需一直按住。 - 持续按住Num Lock 5秒:启用或关闭切换键,用于切换数字键区和方向键功能。 2. **常规键盘快捷方式**: - F1:显示帮助信息,解决操作...

    Java华容道(小游戏)

    你需要学习如何添加事件监听器,处理键盘输入和鼠标点击事件。例如,当用户点击曹操棋子时,程序会检测到这一事件并执行相应的移动逻辑。 4. **二维数组与棋盘布局**:棋盘可以用二维数组来表示,每个元素代表一个...

    实用的Photoshop快捷键

    40. 缩小局部:`Alt+空格键+鼠标单击`可以缩小并查看图像的特定区域。 41. 翻屏查看:使用`PageUp`和`PageDown`键可以上下滚动查看图像。 42. 显示或隐藏标尺:`Ctrl+R`可以切换标尺的显示状态。 43. 显示或...

    windows7怎么清空剪切板-.docx

    1. 按下键盘上的 Windows+R 组合键,在出现的运行窗口中输入 regedit,点击确认打开注册表编辑器。 2. 在注册表编辑器中,依次选 择进入 HKEY_CLASSES_ROOTDirectoryBackgroudshell,右键点击 shell 文件夹,选择...

    <C/C++>利用Win32框架写了个小游戏<分享>

    例如,当用户按下空格键时,你可能需要在`WndProc`中处理`WM_KEYDOWN`消息,以便在游戏中触发特定的行动。 创建窗口后,你需要使用`CreateWindowEx`函数将其显示在屏幕上。这个函数会返回一个`HWND`(窗口句柄),...

    旋转的轮子1-少儿编程scratch项目源代码文件案例素材.zip

    比如,按下空格键可以让轮子加速,释放则减速。 在“旋转的轮子1”项目中,可能还涉及到角色的碰撞检测。Scratch的“侦测”类别提供了“碰到”、“重叠”等条件判断,可以检测角色是否与其他角色或边框发生碰撞,...

    vuejs-cheatsheet

    Vue 支持多种鼠标事件修饰符来处理不同的鼠标点击行为: - **left**: 只当点击鼠标左键时触发。 - **right**: 只当点击鼠标右键时触发。 - **middle**: 只当点击鼠标中间键时触发。 #### 键盘事件修饰符 Vue 也...

    01-2变脸-少儿编程scratch项目源代码文件案例素材.zip

    侦测积木则用于检查条件是否满足,如“按下空格键”或“是否碰到边界”。 6. **用户交互**:通过监听用户的输入,如键盘按键或鼠标点击,可以让程序响应用户的操作。例如,孩子可以通过点击按钮或按下特定键来触发...

    Scratch少儿编程项目源代码文件案例-微重力方块.zip

    1. **事件监听**:游戏的启动、暂停和重新开始等操作可以通过设置不同事件触发,例如当用户点击某个按钮时,Scratch的“当绿旗被点击”或“当按下空格键”积木块可以实现这一功能。 2. **角色与舞台**:在Scratch中...

    小学生Scratch现场编程比赛试题scratch比赛-培训资料.docx

    接着,在脚本区设置`当用户点击绿旗`事件块,添加`按下空格键`条件判断,使小球面向鼠标指针并向前移动一定步数。利用`如果...则`逻辑结构,判断小球是否碰到边缘,碰到则隐藏小球。 2. **猫画正方形:** - **知识...

    官方公布的Windows7快捷键大全

    - 按 Shift 五次: 开启或关闭粘滞键,确保每次只执行一个按键操作。 - 持续按 Num Lock 五秒钟:开启或关闭切换键,用于切换特殊键的行为。 - Windows 徽标键 + U: 打开轻松访问中心,提供各种辅助功能设置。 ...

Global site tag (gtag.js) - Google Analytics