1. 程式人生 > >cocos 觸控雙擊事件的實現

cocos 觸控雙擊事件的實現

在 Cocos2d-x的開發過程中有些時候也是需要用到雙擊的事件處理,那麼由於在cocos2d-x中沒有實現對雙擊的事件的處理,那麼我們就需要自己用程式碼實現。

下面介紹兩種方式實現雙擊事件的處理。

(一)方法一

第一種方法就是利用兩次touch之間的時間間隔來判定是單擊或者是雙擊,一般來說,雙擊,兩次touch之間的時間間隔為250ms~300ms(毫秒)。所以利用這個條件就可以對雙擊進行判斷處理了。

注意到由於要獲取兩次touch之間的touch時間,而且是以毫秒為單位,所以需要用到下面這個方法:

1 2 3 4 5 6 7 //獲取系統的毫秒時間 long millisecondNow() { struct cc_timeval now; CCTime::gettimeofdayCocos2d(&now, NULL); return(now.tv_sec * 1000 + now.tv_usec / 1000); }

由於要獲取兩次touch的時間,所以要定義兩個long型別的變數用於記錄時間;而且定義了一個bool型別的變數記錄是否是雙擊。

1 2 3 long preTime;
long nextTime; bool isClickTwo;</font></font>
初始化為:
1 2 3 preTime = 0.0f; nextTime = 0.0f; isClickTwo  = false;
接著就是要在  ccTouchesBegan( CCSet * touches, CCEvent * event) 這個方法中(注意要在began這個方法中進行,而非ended這個方法中)進行單擊和雙擊的判斷處理了。程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 void HelloWorld::ccTouchesBegan(CCSet* touches, CCEvent* event) { isClickTwo = false; nextTime = millisecondNow(); if((nextTime - preTime < 300) && (nextTime - preTime > 50)) { CCLog("double click"); isClickTwo =