iOS SpriteKit头疼; runAction:completion:不触发完成块

时间:2014-02-22 08:53:35

标签: ios animation sprite-kit skaction sklabelnode

我希望暂停一下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]]]];
}

0 个答案:

没有答案