Как выборочно глотать прикосновения в Kobold2D?

В моем верхнем слое у меня есть спрайт "Кнопка возврата", который должен получать прикосновения. Обычно все остальные касания должны проходить до нижних уровней, но если эта кнопка "Назад" получает жест касания, она должна проглотить касание.

В настоящее время любые прикосновения к кнопке "Назад" также принимаются как прикосновения к слою под ним.

Верхний слой:

-(id) init {
    if ((self = [super init])) {
        [self scheduleUpdate];
        // Initialize KKInput
        KKInput* input = [KKInput sharedInput];
        input.gestureTapEnabled = input.gesturesAvailable;
        ...
    }
    return self;
}

...

-(void) update:(ccTime)delta
{
    KKInput* input = [KKInput sharedInput];
    if (input.gestureTapRecognizedThisFrame) {
        CCLOG(@"Top layer tap recognized");
        if ([self.backButton containsPoint:input.gestureTapLocation]) {
            CCLOG(@"Top layer Back Button tap recognized");
        }
    }
}

Нижний слой

-(id) init {
    if ((self = [super init])) {
        [self scheduleUpdate];
        // Initialize KKInput
        KKInput* input = [KKInput sharedInput];
        input.gestureTapEnabled = input.gesturesAvailable;
        ...
    }
    return self;
}

...

-(void) update:(ccTime)delta
{
    KKInput* input = [KKInput sharedInput];
    if (input.gestureTapRecognizedThisFrame) {
        CCLOG(@"Lower layer tap recognized");
    }
}

Если я коснусь чего-то другого, кроме кнопки "Назад", я получу вывод:

2012-10-16 10:58:03.747 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:58:03.749 MyApp[13838:707] Lower layer tap recognized

Но если я нажму на кнопку "Назад", кнопка не будет поглощена кнопкой:

2012-10-16 10:49:23.426 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:49:23.429 MyApp[13838:707] Top layer Back Button tap recognized
2012-10-16 10:49:23.434 MyApp[13838:707] Lower layer tap recognized

1 ответ

Чтобы очистить состояние жеста, вы можете выключить его и снова включить. Это должно сделать свое дело, если вы добавите это, где вы обрабатываете первый жест касания:

input.gestureTapEnabled = NO;
input.gestureTapEnabled = YES;
Другие вопросы по тегам