发生了什么事后,有没有办法停止触摸方法?

时间:2014-04-03 04:18:44

标签: ios iphone objective-c sprite-kit

在IOS游戏上工作,我希望在玩家遇到一块碎片之后触摸基本上不起作用。

这是播放器击中碎片时的代码:

-(void)dieFrom:(SKNode*)killingDebris {
    _dead = YES;

    [_player runAction:[SKAction sequence:@[
                [SKAction repeatAction:[SKAction rotateByAngle:M_PI duration:0] count:1],
                [SKAction moveByX:0 y:-700 duration:1],
                [SKAction runBlock:^{
        [_player removeFromParent];
    }]

    ]]];

}

哪种方式符合我的要求。问题是玩家基于touchesMoved移动,因此如果用户将手指放在玩家身上,它会暂时停止moveByX动作,使玩家在屏幕上停滞不前,然后自行移除,显然看起来很可怕。这是触摸方法:

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


}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    [_player runAction:[SKAction moveTo:[[touches anyObject] locationInNode:self] duration:0.15]];

}

我尝试在touchesMoved方法的末尾添加以下内容:

if (_dead == YES) {
    [self removeAllActions];         
}

哪个也没用。无论如何,当玩家击中碎片时,我可以取消任何触摸吗?

1 个答案:

答案 0 :(得分:2)

如果要为所有视图禁用触摸,请执行此操作;

[self.view setUserInteractionEnabled:NO];

如果要禁用特定视图的触摸,请执行以下操作

yourView.userInteractionEnabled = NO;

您可以通过将值设置为YES来启用它。