2010-10-31 72 views
2

我在寫一個iPhone應用程序,我想處理多點觸控。我正在使用cocos2d庫。所以我製作了一個CCLayer子類,並將其設置爲CCStandartTouchDelegate。出於某種原因,我不想用UIGestureRecognizer,並建立一個正確的邏輯,我應該知道這些問題的答案:Iphone多點觸控處理

  1. 如果我點擊屏幕用一個手指,然後用另一個。 ccTouchesBegan有多少觸動?

  2. 如果我用兩個手指點擊屏幕,然後只會移動其中的一個。 ccTouchesMoved會被多少次觸動?

回答

4

當你有這樣的問題時,最好的辦法就是實現回調,並在實現中記錄參數。例如:

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // Log everything (there will be repetition because the event contains the set of touches): 
    NSLog(@"ccTouchesBegan: touches = %@; event = %@", touches, event); 

    // Or, just log the number of touches to simplify the output: 
    NSLog(@"ccTouchesBegan: %d touches", [touches count]); 

    return kEventHandled; 
} 

然後只需運行您的應用程序和實驗,看日誌。你會通過這種方式學習更多(並且更快),而不是通過在這裏詢問。

但是,爲了回答您的具體問題:

  1. 你應該得到一個呼叫ccTouchesBegan對於每個抽頭(即使第一指仍然下跌當第二次敲擊時)。如果兩個手指同時擊中,您將通過兩次觸摸獲得一個呼叫。

  2. 每當一個或多個手指移動時,您都會重複調用ccTouchesMoved。如果只有一個手指正在移動,每次呼叫都會通過一次觸摸。靜止的手指在移動或擡起之前不會產生事件。

當然,記得設置isTouchEnabled = YES您CCLayer否則您將無法在所有得到任何回調。