我正在为 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]]]];
}