宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]as3处理双击事件的三种方法

2016-10-13 00:16:48 点击量:9 标签: 收藏本文

经常编程的人士肯定会遇到一个问题,就是同时使用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 ) );

}

}

}
 

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室