在UI中,经常会出现多次事件的情况,最常见的比如鼠标双击和三击,触摸屏上的双敲等。一次动作,就发一下事件就好。那么两次甚至多次事件怎么处理才最好呢?

当触发多次事件时,单次事件以及两次事件是否还要继续发送?

要什么方式判断两次事件间隔足以算上一个多次事件而不是多个单次时间呢?

代码是最好的老师。在Apache Pivot中找到了一段处理该事件的代码,伪代码如下:

long lastTime = 0;
int count = 0;

int multiInterval = 500;

// 亮屏
screenOn(){
    process();
}

// 灭屏
screenOff(){
    process();
}

// 处理
process(){
    long currentTime = System.currentTimeMills();
    if(current - lastTime < multiInterval){
        count++;
    }else{
        lastTime = System.currentTimeMills();
        count = 1;
    }
    // 触发监听
    changeListeners.change(count);
}

从上述伪代码可以看出:

  • 每次事件都会发出,可能发出多个单次事件,也可能发出一个单次事件,一个两次事件……总之,每次UI操作均会发出事件
  • 判断两次事件是否算成一个组合事件,是通过判断事件触发间隔时间来做的

标签: none

添加新评论