无法暂停精灵套装游戏

时间:2014-08-15 16:07:32

标签: ios cocoa-touch sprite-kit

我已经检查了暂停我的精灵套件游戏的其他答案。我想在精灵加载后暂停游戏,播放“READY SET GO”动画,然后取消暂停游戏。

在viewdidload中,我尝试了self.view.scene.paused = YES;self.scene.view.paused = YES;以及[self.view.scene setPaused:YES];[self.scene.view setPaused:YES];,但都没有。

我确实在暂停之前加载了一些NSTimers,并且我被告知暂停场景不会暂停定时器,但暂停我的场景似乎不会暂停任何SKActions或物理模拟。< / p>

出于某种原因,[self.heli setPaused:YES];会暂停heli动画,但不会暂停heli的物理模拟。

此外,我的其他精灵被添加到方法中,它们是随机生成的障碍,并作为子项添加到self

那么为什么不暂停工作?

2 个答案:

答案 0 :(得分:2)

你可以用这个暂停物理:

scene.physicsWorld.speed = 0.0;

根据评论进行修改:

您正在暂停节点,而不是整个场景。

[self.heli setPaused:YES];

这个“...确定是否处理了节点及其后代上的动作。”

如果您想要暂停整个场景,那么您应该使用:

self.scene.view.paused = YES;

将停止所有动作和物理模拟。

答案 1 :(得分:0)

以下是一种可以从viewDidLoad暂停场景的方法。我不建议在viewDidLoad中暂停您的观点,但是这里有如何做到这一点......

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;

    // Create and configure the scene.
    SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    // The following will NOT pause your SKView because your scene has yet to be presented,
    // so scene.view == nil
    scene.view.paused = YES;

    // This will pause your scene and its contents because the scene has been created
    skView.paused = YES;

    // Present the scene.
    [skView presentScene:scene];
}

我建议您在SKScene子类的didMoveToView(在initWithSize中工作)方法中使用self.scene.view.paused = YES暂停场景。此外,您应该考虑使用SKActions(使用waitForDuration,performSelector:onTarget等)替换核心中的NSTimers,因为后者在暂停/恢复游戏时会暂停/恢复。