在目标C中,当呈现新场景时,如何移除旧场景?

时间:2015-08-10 16:27:56

标签: ios objective-c sprite-kit

我是Objective-C的新手,所以我可能会使用错误的方法来首先呈现场景,但是当我呈现我的新场景时,可以通过它看到旧场景。

- (void)buttonClicked:(UIButton*)button
{
    NSLog(@"Button %ld clicked.", (long int)[button tag]);
    WarScene *battle = [[WarScene alloc] initWithSize: CGSizeMake(1024,768)];
    SKTransition *reveal = [SKTransition       revealWithDirection:SKTransitionDirectionDown duration:1.0];
    SKView * skView = (SKView *)self.view;
    [skView presentScene:battle transition:reveal];
}

在删除当前场景的presentScene方法之前,我首先要写一些东西吗?

很抱歉,如果这是一个非常基本的问题,我已经搜索过并查找示例,但似乎没有任何其他代码,我错过了这表明我可能首先出现错误的场景。

2 个答案:

答案 0 :(得分:4)

好消息!您不必编写任何内容来删除旧场景。它会被自动删除,因为Sprite Kit会为您完成所有的解除分配。但是,如果您需要,可以在didMoveFromView方法中进行额外的“总结”。

现在,过去的人们已经报道了你正在经历的事情。我的建议是在SKScenes之间进行转换,而不是在展示他们自己的SKScene的SKView之间进行过渡。通过这种方式,您可以确保将所有内容全部分开,从而自动解除分配。看到这个answer,我认为它会对你有所帮助。

祝你好运!

答案 1 :(得分:0)

您无需编写任何代码即可删除旧场景。 Sprite Kit会自己做。但是,如果您想这样做,可以执行以下操作:

  [skView presentScene:nil];

stackoverflow's question可能会进一步澄清你。