2013-05-29 221 views
1

我正在使用黑莓触摸事件,我需要处理TouchEvent.MOVE,TouchEvent.UPTouchEvent.DOWN以移动图像传送带和TouchEvent.CLICK以生成一些特定操作。触发事件黑莓触发多次

我的问题是touchEvent()方法被多次调用。我怎样才能防止这一点?因为行为越来越混乱。

例如:当我只想捕获TouchEvent.CLICK事件时,UP-DOWN-MOVE-CLICK将在下一个触发器之后触发。

我的代码执行以下操作:

protected boolean touchEvent(TouchEvent message) { 

    if (message.getEvent() == TouchEvent.CLICK) { 

     //CHANGE THE CONTENT OF A FIELD 

     return true; 
    } else if ((message.getEvent() == TouchEvent.MOVE) 
      || (message.getEvent() == TouchEvent.UP) 
      || (message.getEvent() == TouchEvent.DOWN)) { 

     //DELETE THE FIELD 
          //MOVE A CAROUSEL OF IMAGES 
    } else { 
     return false; 
    } 
} 

public void moverTouch(int dx) { 
    //ADD THE FIELD PREVIOUSLY DELETED 
} 

正如你所看到的,当被捕获的CLICK事件,我需要改变一个字段的内容,但是当MOVEUPDOWN事件被捕获,我需要从他的经理中删除那个Field,做一些与图像传送带一起工作,然后重新添加先前删除的字段。

转盘移动部件工作正常,但是当我试图捕捉只是CLICK事件,其他人都被触发为好,但moverTouch()函数不会被触发,因为有在转盘上没有实际的运动的图像,我结束了一个删除的领域,我需要更新其内容。

+1

在所有黑莓的原始风暴9500以外,CLICK和DOWN是同义词,并且总是一起出现。同样,UNCLICK和UP总是一起出现。您应该忽略UP和DOWN事件,因为9500设备已经完全灭绝。 – adwiv

回答

3

一览:

我想你需要区分触摸手势(我相信你“听”的东西,像一个滑动手势滚动库图像)从“正常”触摸事件(具体你需要处理TouchEvent.CLICK以对点击的图像应用“某些特定动作”)。

要确定TouchEvent是否代表手势,常数是TouchEvent.GESTURE。然后有可能通过呼叫TouchEvent.getGesture()知道它究竟代表了什么TouchGesture

触摸手势的一些示例代码可以查看here