cocos 觸控雙擊事件的實現
阿新 • • 發佈:2019-01-24
在 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 ;
|
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
= |