AS3 判断双击事件
//双击事件触发的时候不触发单击事件
package {
import com.greensock.TweenLite;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.getTimer;
public class Test1 extends Sprite {
private var _rect:Sprite;
public function Test1() {
trace("hello world");
// this.stage.addEventListener(MouseEvent.CLICK, __onTraceClick);
drawRect();
_rect.addEventListener(MouseEvent.ROLL_OVER, __onOver);
_rect.addEventListener(MouseEvent.ROLL_OUT, __onOut);
_rect.addEventListener(MouseEvent.MOUSE_DOWN, __onDown);
}
private function __onOver(evt:MouseEvent):void {
//trace("over");
}
private function __onOut(evt:MouseEvent):void {
//trace("out");
}
private var _preDownTime:int = 0;
private function __onDown(evt:MouseEvent):void {
trace("down");
TweenLite.killDelayedCallsTo(doClick);
_rect.addEventListener(MouseEvent.MOUSE_UP, __onUp);
_rect.startDrag();
_preDownTime = getTimer();
}
private const UP_INTER:int = 300;
private var _preUpTime:int = 0;
private function __onUp(evt:MouseEvent):void {
trace("up");
_rect.removeEventListener(MouseEvent.MOUSE_UP, __onUp);
_rect.stopDrag();
var now:int = getTimer();
if((now - _preUpTime) < UP_INTER) {
trace("----double click");
} else if((now - _preDownTime) < UP_INTER) {
TweenLite.delayedCall(0.2, doClick);
} else {
trace("drag");
}
_preUpTime = now;
}
private function doClick():void {
trace("----click");
}
private function __onTraceClick(evt:MouseEvent):void {
var str:String = "";
trace(printTrace(evt.target as DisplayObjectContainer));
}
private function printTrace(sp:DisplayObjectContainer):String {
if(null == sp) {
return "";
} else {
return sp.toString() + "/" + printTrace(sp.parent);
}
}
private function drawRect():void {
var rect:Sprite = new Sprite();
// red rect, starting at point 50, 50
rect.graphics.beginFill(0xFF0000);
rect.graphics.moveTo(50, 50);
rect.graphics.lineTo(150,50);
rect.graphics.lineTo(150,150);
rect.graphics.lineTo(50,150);
rect.graphics.endFill();
_rect = rect;
this.addChild(_rect);
}
}
}
AS3 判断双击事件的更多相关文章
- Android 通过onTouchEvent判断是否为双击事件
通过onTouchEvent判断是否为双击事件,通过前面一次up 跟本次down之间的时间差,并且点击的点的坐标偏移来确定是否为双击事件DOUBLE_TAP_TIMEOUT. boolean isMo ...
- Android实现双击事件的两种方式
Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...
- iOS tabBar双击事件
思路: 在tabBarController的代理方法 shouldSelectViewController 中, 通过判断tabBar选中的控制器是否是当前控制器 并 比对两次点击的时间间隔 来判断是 ...
- Angular JS中双击事件ng-dblclick避免同时触发两次单击事件ng-click的解决方案
有些需求中,需要一个元素上既有双击事件,也有单击事件,而两者实现的效果不一样. 这时可以使用ng-dblclick与ng-click来实现需求,但是要避免浏览器将双击事件误认为是两次单击事件,从而出现 ...
- 关于双击事件.MouseEvent.DOUBLE_CLICK
as3提供了双击事件的调用,但有时候碰到双击事件无法响应,所以总结下原因.先摘录一段官方关于 doubleClick 事件发生的条件.如果 InteractiveObject 的 doubleClic ...
- andorid 中如何实现双击事件
项目需求: android中只有单击和其他事件,其实都是由OnTouch事件演变而来:最近有项目要求双击全屏,所以就试着实现了下 具体实现如下: 1.MainActivity.java实现: publ ...
- C# Note16: wpf window 中添加enter和双击事件
一.添加回车(enter)事件 在C#编程时,有时希望通过按回车键,控件焦点就会自动从一个控件跳转到下一个控件进行操作. 以用户登录为例,当输入完用户名和密码后, 需要点击登录按钮,而登录按钮必须获 ...
- html元素双击事件触发机制猜想及疑惑
今天有个同事遇到一个奇怪的问题,我照着他的代码做了一些简化写了这个demo <!DOCTYPE html> <html> <head> <style type ...
- Cocos2d-x 处理双击事件的两种方法
在cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现. 下面介绍两种方式实现双击事件的处理. (一 ...
随机推荐
- 497. Random Point in Non-overlapping Rectangles
1. 问题 给定一系列不重叠的矩形,在这些矩形中随机采样一个整数点. 2. 思路 (1)一个矩形的可采样点个数就相当于它的面积,可以先依次对每个矩形的面积累加存起来(相当于概率分布中的分布累积函数CD ...
- javascript 快速排序方法
"快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元 ...
- 转载:使用 OpenCV 识别 QRCode
原文链接:http://coolshell.cn/articles/10590.html#jtss-tsina 识别二维码的项目数不胜数,每次都是开箱即用,方便得很. 这次想用 OpenCV 从零识别 ...
- git-format-patch如何指定补丁生成的Subject格式
答:使用-N来指定,如: git format-patch -N <commit-id> 生成的补丁中Subject将以[PATCH]的格式呈现,例如:Subject: [PATCH] a ...
- pytorch 从入门到实战
一.安装 按照 http://pytorch.org 官网上的说明来做,遇到了几个坑.记录如下: 1.用 conda 安装 pytorch 时,下载安装包非常慢,无法忍受. 解决办法:用蓝灯FQ,将蓝 ...
- 51Nod 1503 猪和回文
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1503 思路: 没想到要用DP去解决. 题目是从起点出发走,我们可以从起点 ...
- C#中标准Dispose模式的实现(转载)
需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:w ...
- install ros-indigo-camera-info-manager
CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake: (find_package): Could not fi ...
- Java Spring-事务管理
2017-11-12 16:31:59 Spring的事务管理分为两种: 编程式的事务管理:手动编写代码 声明式的事务管理:只需要配置就可以 一.最初的环境搭建 public interface Ac ...
- IntelliJ IDEA自定义类和方法注解模板
现在Java开发主流工具应该是Intelij Idea 方便快捷. 本文将主要介绍如何用Intelij Idea配置类及方法的注释模板提高代码注释效率 1. 配置类注解模板 找到配置页面 File - ...