自定义鼠标双击事件的缺陷及改善
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-08
昨天晚上想写个鼠标双击事件,总感觉以前见过这个代码(最后想起来好象是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"); } } 标志位的实在想不出来,绞起来混乱的要命……看来逻辑思维还要加强训练 【责任编辑 张洪】 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于自定义鼠标双击事件的缺陷及改善的所有评论