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