1

我正在为 SprintKit 游戏暂停触摸。当游戏暂停时,标签显示为 PAUSE 作为文本,直到用户再次触摸屏幕以取消暂停。当游戏取消暂停时,将在场景再次运行之前显示从 3 开始的倒计时。

似乎第 7 行 ([_pauseLabelNode setText:@"2"];) 从未被动画完成触发,这很奇怪,因为我在代码的其他地方使用 runAction:completion: 并且效果很好!为了完成这项工作,我是否需要通过设置操作队列来过度膨胀以控制动画序列?还是我只是犯了一个错误但对此视而不见?

这是我到目前为止所拥有的:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ([self isPaused]) {
        [_pauseLabelNode setText:@"3"];
        [_pauseLabelNode setScale:1.0];
        [_pauseLabelNode runAction:[SKAction scaleTo:0.0 duration:1.0] completion:^{
        [_pauseLabelNode setText:@"2"];
        [_pauseLabelNode setScale:1.0];
        [_pauseLabelNode runAction:[SKAction scaleTo:0.0 duration:1.0] completion:^{
            [_pauseLabelNode setText:@"1"];
            [_pauseLabelNode setScale:1.0];
            [_pauseLabelNode runAction:[SKAction scaleTo:0.0 duration:1.0] completion:^{
                [_pauseLabelNode setScale:1.0];
                [self setPaused:NO];
                [_pauseLabelNode setText:@"GO"];
                [_pauseLabelNode runAction:[SKAction scaleTo:0.0 duration:0.5]];
            }];
        }];
    }];
} else {
    _pauseLabelNode = [SKLabelNode labelNodeWithFontNamed:@"Papyrus"];
    [_pauseLabelNode setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter];
    [_pauseLabelNode setPosition:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))];
    [_pauseLabelNode setFontSize:48.0f];
    [_pauseLabelNode setZPosition:100];
    [_pauseLabelNode setText:@"Pause"];
    [self addChild:_pauseLabelNode];
    [self setPaused:YES];
    [_pauseLabelNode runAction:[SKAction sequence:@[[SKAction scaleTo:1.5 duration:0.1], [SKAction scaleTo:1.0 duration:0.1]]]];
}
4

0 回答 0