CC UITouches, не обращая внимания на второе касание - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь переместить спрайт с помощью UITouch, и мне нужно быть в мультитач-режиме, потому что у меня есть кнопка, которую я также должен нажимать, пока я перемещаю спрайт.

Проблема в том, что, когда я пропускаю кнопку и нажимаю на экран другим пальцем, второй палец становится касанием, которое заставляет мой спрайт перепрыгивать позиции. Любая работа вокруг. Я пытался положить кнопку в своем классе, но это не помогло. Причина, по которой я не просто перенес весь код в касания, состоит в том, что я вычисляю смещение от начала касаний.

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    NSSet *allTouches = [event allTouches];
    switch ([allTouches count]) {
        case 1:{
            NSLog(@"moving touch 1");}break;

Так что теперь происходит, когда я провожу пальцем по экрану он обнаруживает движение 1, но как только я кладу второй палец, он перестает двигаться 1 я не хочу, чтобы это прекратило двигаться 1

Ответы [ 2 ]

0 голосов
/ 19 января 2012

наложите условие на касание обеих кнопок и не включайте в него еще ни одного случая, чтобы избежать других касаний.

Как:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSSet *allTouches = [event allTouches];

    switch ([allTouches count]) {
        case 1: {
            CGPoint pos = [[[allTouches allObjects] objectAtIndex:0] locationInView:self];
            // code here for single touch.


        } break;
        case 2: {
            //get out two fingers
            UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
            UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
            // code here for multi touch

        } break;

    }


}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    NSSet *allTouches = [event allTouches];

    switch ([allTouches count])
    {
        case 1: { //Move
            //Single touch


        } break;
        case 2: { //Zoom
            //multi touch

            UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
            UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];

            // Code according to you


        } break;

    } 

}

Надеюсь, это поможет.

0 голосов
/ 19 января 2012

В вашем -touchesBegan: методе вы проверяете точку касания, чтобы увидеть, находится ли она внутри изображения?

...