2013-02-13 20 views
2

我想用cocos2d開發一款遊戲。我現在卡住了。我不知道如何檢測雙擊事件,就像在Windows中雙擊一樣。我嘗試在ccTouchesEnded在cocos2d中雙擊

使用

NSArray * allTouches = [touches allObjects]; 
int count = [allTouches count]; 

但這似乎在雙觸摸發生在同一時間工作。我想知道它在Windows中的樣子。

任何人都可以給我一些想法嗎? 在此先感謝。

+1

UITapGestureRecognizer可以設置測試對於雙擊,請參閱:http://developer.apple.com/libra ry/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html#// apple_ref/occ/cl/UITapGestureRecognizer – LearnCocos2D 2013-02-13 23:24:36

回答

3

如果使用targetedTouchDelegate,你可以這樣做:

- (void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { 
    if(touch.tapCount==1) MPLOG(@"ONE TAP"); 
    if(touch.tapCount==2) MPLOG(@"TWO TAPS"); 
    return; 
} 

你會得到兩個觸摸時雙擊發生,即這將記錄這兩個「一個水龍頭」和「兩個水龍頭」時,有是一個雙擊。由你決定你的狀態並做你的事情。

+1

你是一個傳奇人物。多麼好的解決方案。謝謝。 – PKCLsoft 2017-10-24 04:06:29

2

你在談論多點觸摸2手指點擊或雙擊就像在Mac和Windows?

如果是在Mac和Windows中雙擊,那麼這裏是解決方案。

你可以用兩種方法做到這一點。通過LearnCocos2D在此question建議

  1. 使用UITapGestureRecognizer(設置爲檢測雙水龍頭)。

  2. 使用手動雙擊跟蹤使用時差。在接口文件

    NSTimeInterval  mLastTapTime; 
    

// decalre此實施文件:

-(id)init 
{ 
    if(self = [super init]) 
    { 
     mLastTapTime = [NSDate timeIntervalSinceReferenceDate]; 
    } 
    return self; 
} 

//在觸摸方法

NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate]; 
NSTimeInterval diff = currentTime - mLastTapTime; 

if(diff < 0.5) //0.5 or less 
{ 
    //double tap 
} 

mLastTapTime = [NSDate timeIntervalSinceReferenceDate];