Iphone мультитач обработка - PullRequest
       15

Iphone мультитач обработка

2 голосов
/ 31 октября 2010

Я пишу приложение для iPhone и хочу работать с мультитачами.Я использую cocos2d libs.Итак, я сделал подкласс CCLayer и установил его на CCStandartTouchDelegate.По какой-то причине я не хочу использовать UIGestureRecognizer и для построения правильной логики я должен знать ответы на эти вопросы:

  1. Если я коснусь экрана одним пальцем, изатем с другим.Сколько касаний будет поймано в ccTouchesBegan?

  2. Если я коснусь экрана двумя пальцами, а затем переместится только один из них.Сколько касаний будет поймано в ccTouchesMoved?

1 Ответ

4 голосов
/ 31 октября 2010

Лучшее, что нужно сделать, когда у вас возникнет такой вопрос, - это просто реализовать обратные вызовы, а в реализации зарегистрировать параметры. Например:

- (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, иначе вы не получите никаких обратных вызовов.

...