【问题标题】:How to selectively swallow touches in Kobold2D?如何在 Kobold2D 中选择性地吞下触摸?
【发布时间】:2012-10-16 10:05:37
【问题描述】:

在我的顶层中,我有一个“后退按钮”精灵,它应该接收触摸。通常所有其他触摸都应该传递到较低层,但如果此后退按钮接收到轻击手势,则它应该吞下触摸。

目前,对“后退”按钮的任何触摸也会被接收为对下层的触摸。

顶层:

-(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

【问题讨论】:

    标签: kobold2d


    【解决方案1】:

    要清除手势状态,您可以将其关闭并重新打开。如果您在处理第一个轻击手势的位置添加它,这应该可以解决问题:

    input.gestureTapEnabled = NO;
    input.gestureTapEnabled = YES;
    

    【讨论】:

    • 这对我不起作用。我在 CCLOG(@"Top layer Back Button tap Recognized"); 之后插入了这个,但下层仍然响应了点击。也许此时禁用/启用手势为时已晚?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多