自定义鼠标双击事件的缺陷及改善

鼠标

昨天晚上想写个鼠标双击事件,总感觉以前见过这个代码(最后想起来好象是JS里面的……)按习惯写了个onDbClick,发现居然不变色?!晕了,于是改onDoubleClick、onDouble……等等都不变色,FLASH难道没有定义这个事件?!气愤中,去查帮助,里面果然没有……
然后就上来搜了闪吧里有关鼠标双击的帖子,一看N多啊,都是自己写函数实现的(再次气愤),不过还是HOLYBOZO的代码是最简洁的,于是拖下来用了。用的时候就发现问题了,只要在延迟以内,我狂点10次就触发了9次事件,而按常理应该是两次一个,就是说如果每两次之间的时间都不超过延迟的话,点10次应该只产生5次事件(我这个道理对不对啊,呵呵),于是着手改算法……
如下是可能的点击情况( 代表点击,_代表延迟间隔,___代表超过延迟):
 _ ___ _ ___....
 ___ _ ___...
 _ _ ___ _ ....
....
……在我漫长的尝试中,我首先想到的是设标志,双击完成一次就置标志,最后未果,只实现了分隔开中间超过延迟时间的两次双击, _ ___ _ ,而如果是一直点的话就只触发一次事件 _ _ _ _ _ .....= _ 。于是郁闷了一晚上,觉都没睡好,总感觉是可以的,就是没想出来……
正解:早上过来决定换个方法,一眼就看到lastClicked这个时间变量,于是在代码里加了当完成一次双击则置0,HOHO,成功了……(有点兴奋),下面是代码:

//var j=0;
var lastClicked=0;
MovieClip.prototype.dbClick=function(time){
if(time==undefined) time=500;
if((lastClicked-(lastClicked=getTimer())+time>0)){
//trace("time true");
lastClicked=0;
return true;
}
return false;
}
_root.onMouseDown=function(){
//trace(j++);
if(dbClick(250)){
trace("double click");
}
}
标志位的实在想不出来,绞起来混乱的要命……看来逻辑思维还要加强训练

时间: 2024-08-31 14:36:16

自定义鼠标双击事件的缺陷及改善的相关文章

webbrowser,鼠标双击事件不激发~·求救

问题描述 我在winform程序中给webBrowser挂了双击事件,代码如下:C#codemshtml.IHTMLDocument2doc=(this.webBrowser1.ActiveXInstanceasSHDocVw.WebBrowser).Documentasmshtml.IHTMLDocument2;mshtml.HTMLDocumentEvents2_Eventhevent=(mshtml.HTMLDocumentEvents2_Event)doc;hevent.ondblcli

捕捉DataGrid的双击事件(C#版本)

datagrid namespace DataGridDoubleClick{ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form { private System.Windows.

jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法_jquery

本文实例讲述了jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法.分享给大家供大家参考,具体如下: JS鼠标双击事件 onDblClick <td width="10%" title="双击修改" ondblclick="ShowElement(this,<%#Eval("id") %> </td> 这里的本人用绑定的值是传的当前行对应的ID号 function ShowEle

bootstrap-treeview自定义双击事件实现方法_javascript技巧

bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树.列表树等等.但是不知为什么这个插件没有自带双击事件. 经过多次测试,使用方法$('#tree').dblclick( function () {})和方法$('#tree').on('dblclick',function(){})都不起作用!百思不得其解.最后救助大神,问题解决了,但是

JS实现鼠标单击与双击事件共存

 本篇文章主要是对JS实现鼠标单击与双击事件共存的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 一直都认为在Web开发中,双击事件都是少至又少地使用,直到最近项目需要,要在一个按钮上绑定单击与双击两件事件.开始也觉得不就是给按钮绑下两个事件而已罢了--只是后来才明白,是我想得太简单,在双击事件触发的同时也会触发单击的~囧   通过一番研究后,终于利用JS中"setTimeout"延时执行方法的办法,将单击延迟300毫秒执行才解决了,代码如下:    代码如下: &l

js鼠标单击和双击事件冲突问题的快速解决方法_javascript技巧

情况一 如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox). 解决方法: <button onclick="test(1)" ondblclick="test(2)"></button> <scr

自定义view-自定义View控件中怎么实现双击事件和单击事件

问题描述 自定义View控件中怎么实现双击事件和单击事件 最近写了一个自定义View控件,想要实现单击事件和双击事件,单击事件到时很容易实现,但是双击事件却不知道怎么实现,求助一下在自定义View控件下怎么实现双击事件. 解决方案 android中只有单击和其他事件,其实都是由OnTouch事件演变而来 public class MainActivity extends Activity implements OnTouchListener { private long firstClick;

Android 自定义View实现单击和双击事件的方法_Android

自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理 核心代码如下:  public class MyView extends View { ...... // 统计500ms内的点击次数 TouchEven

Android 自定义View实现单击和双击事件的方法

自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理 核心代码如下: public class MyView extends View { ...... // 统计500ms内的点击次数 TouchEvent