[AS3]as3处理双击事件的三种方法
经常编程的人士肯定会遇到一个问题,就是同时使用AS3中自带的MOUSE.CLICK和MOUSE.DOUBLE_CLICK会产生响应函数的冲突,如双击时,单击和双击的响应函数都会执行。以下代码可以较为完美地解决此问题。
【方法一】
import flash.events.MouseEvent;
import flash.events.TimerEvent;
var doubleClick:Boolean = false;
stage.addEventListener(MouseEvent.CLICK, mClick);
function mClick(e:MouseEvent):void
{
if (doubleClick)
{
doubleClick = false;
return;
}
doubleClick = true;
var timer:Timer = new Timer(260, 1);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
function onTimer(e:TimerEvent):void
{
if(doubleClick){
trace("在这里处理单击事件")
} else {
trace("在这里处理双击事件")
}
timer.removeEventListener(TimerEvent.TIMER, onTimer);
doubleClick = false;
}
}
【方法二】
mc.doubleClickEnabled=true
mc.addEventListener(MouseEvent.CLICK,chick)
mc.addEventListener(MouseEvent.DOUBLE_CLICK,double)
var sta=false
function double(e){
sta=true
}
function chick(e){
sta=false
var time=new Timer(260,1)
time.start()
time.addEventListener(TimerEvent.TIMER,func)
}
function func(e){
if(sta){
trace("双击")
}else{
trace("单击")
}
}
【方法三】
import flash.display.Sprite;
import flash.events.*;
import flash.utils.Timer;
public class MyButton extends Sprite
{
public var double:Boolean;
public function MyButton() {
super();
init();
}
public function init():void {
addEventListener( MouseEvent.CLICK , onClickHandler );
addEventListener( MouseEvent.DOUBLE_CLICK , onDoubleClickHandler );
}
public function onClickHandler( e:MouseEvent ):void {
double = false;
var timer:Timer = new Timer(260,1);
timer.addEventListener( TimerEvent.TIMER , checkClick );
timer.start();
}
public function onDoubleClickHandler( e:MouseEvent ):void {
double = true;
}
public function checkClick( e:TimerEvent ):void {
if( double ){
//监听这两个自定义事件即可
dispatchEvent( new Event( "mouseDoubleClick" , true ) );
}else{
dispatchEvent( new Event( "mouseSingleClick" , true ) );
}
}
}
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例