2013-05-29 220 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