`
libo_591
  • 浏览: 38919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Timer实现FLEX单击双击分离响应

    博客分类:
  • FLEX
 
阅读更多

一.背景

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实例时,一定将其关闭。(另附内存管理文章一篇,见附件)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics