一.背景
在FLEX中使用Label组件,在触发双击的同时,必然会触发一次单击事件,这样造成的结果是客户体验性不好,所以决定想办法改进。
二.解决办法
1. 在单击事件中,进行单双击类型的判断,在双击事件中,继续处理双击事件
2. 在组件初始化中,加入如下代码
//此延迟时间必须大于双击判断时间,否则执行双击事件时,还是要触发单击事件
Var clickDelayTimer:Timer = new Timer(1000);
clickDelayTimer.addEventListener(TimerEvent.TIMER,delayTime);
3. 单双击类型判断的代码
var time2:Number = new
Date().getTime();//第二次点击的时间
var cha:Number =
time2-firsttime;//firsttime为第一次点击的时间,起始为0
if(cha<500){//2次点击时间小于500毫秒,则认为为双击
isDoubleClick = true;
CursorManager.removeBusyCursor();
var
event2:MouseEvent =
new
MouseEvent(MouseEvent.DOUBLE_CLICK,false,false);
this.dispatchEvent(event2);//触发本组件的双击事件
}else{//为单击事件
firsttime = time2;//当前时间作为第一次点击的时间
CursorManager.setBusyCursor();
clickDelayTimer.start();//启动timer,执行单击事件的逻辑
}
三.总结
由以上解决问题的过程中可以看到,timer组件的延迟执行,是解决问题的核心点,正是由于其这个机制,使得此问题得以顺利解决
四.Timer组件的介绍
目前实际应用中,用到的地方
A.
当前台程序需要延迟一段时间
B.
代替大数据量的For循环,可以提高页面的客户体验
同时,灵活运用此组件,可以解决很多其他问题。此组件若使用不当,会造成内存泄露,因此使用时需注意,不再需要此
timer实例时,一定将其关闭。(另附内存管理文章一篇,见附件)
分享到:
相关推荐
使用Timer实现左右飘动的窗体 使用Timer实现左右飘动的窗体 使用Timer实现左右飘动的窗体 使用Timer实现左右飘动的窗体
不使用timer控件,用Invoke实现UI界面更新
C# Winform程序使用 timer插件 实现 鼠标坐标 动态显示
__interrupt void Timer1_int() { T1STAT &=~0x20; if(SW1 !=0 && Num !=0) { count++; } } void Scan() { if(SW1==0) { delay(100); if(SW1==0) { while(SW1==0); count=0; Num++; if(Num>2) { ...
使用Timer组件实现倒计时关键技术1:Timer的Enabled属性关键技术2:DateAndTime类的DateDiff方法
最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:timer_create()(创建定时器)、timer_settime()(初始化...本代码基于posix timer,实现自己的定时器,简单易用。
关于winform使用timer进行多线程操作的例子 一个关于网段ping的例子 很好的解释了system.timers.timer的用法
该实例在winform中通过timer控件,实现了触发datagridview双击事件时不触发datagridview的单击事件
-Timer实现两路频率和占空比可调的代码源代码 默认两路,可删减路数,步骤见注释 不明白的看注释,注释详细 代码已经封装好,更改头文件即可更改相关接口 使用STM32单片机F1系列ZET6芯片,Timer定时器输出两路占空比...
实现timer的文件,实现timer的文件,实现timer的文件 实现timer的文件
完整示例,直接导入工程即可实现,欢迎各位下载,和评论,谢谢
Demo_2使用Timer组件实现冬奥会计时
Jdk的Timer 实现定时器,本例代码包括Handler 发送消息的简单实现过程 定时器 Timer,在这里演示一个进度条不断更新
flash as2.0里没有鼠标双击事件,通过timer自己写的双击事件;flash as2.0里没有鼠标双击事件,通过timer自己写的双击事件
使用java.util.timer实现的简单定时任务,在实现简单一次性定时任务时,使用java.util.timer非常的简单易用,适合没有接触过quartz的新手急用。
C#简单的实现计时器的代码 利用Timer实现 虽然简单但挺实用的代码 初学者可以看看
erlang的timer和实现机制 Erlang程序设计
Timer 实现倒计时1
程序可以实现任意波形发生器的功能 使用了一个DAC转换结合 DMA数据传输和定时器定时触发,可以轻松实现任意波形的生成,Stm32F407上使用的时候数据输出可以达到3M点每秒。