在Objective C中,当呈现一个新场景时,如何去除旧场景?
Posted
技术标签:
【中文标题】在Objective C中,当呈现一个新场景时,如何去除旧场景?【英文标题】:In objective C, when presenting a new scene, how do you remove the old scene? 【发布时间】:2015-08-10 16:27:55 【问题描述】:我是 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 方法之前我必须先写一些东西吗?
对不起,如果这是一个非常基本的问题,我已经四处搜索并寻找示例,但似乎没有任何我遗漏的其他代码,这表明我可能首先呈现错误的场景。
【问题讨论】:
【参考方案1】:好消息!您无需编写任何内容即可删除旧场景。它会自动删除,因为 Sprite Kit 会为您完成所有解除分配。但是,如果您需要,您可以在 didMoveFromView
方法中进行额外的“总结”。
现在,过去的人已经报告了您正在经历的事情。我的建议不是在 SKScene 之间转换,而是在呈现自己的 SKScene 的 SKView 之间转换。通过这种方式,您将确保一切都通过保持分离而自动释放。看到这个answer,我觉得对你很有帮助。
祝你好运!
【讨论】:
【参考方案2】:您无需编写任何代码即可删除旧场景。 Sprite Kit 会自己做。但是,如果您想这样做,您可以执行以下操作:
[skView presentScene:nil];
另外这个***'s question 可能会进一步澄清你。
【讨论】:
以上是关于在Objective C中,当呈现一个新场景时,如何去除旧场景?的主要内容,如果未能解决你的问题,请参考以下文章
iOS,Objective C 呈现 NavigationController 模式并添加取消按钮
如何在应用程序委托iOS10 Objective C中的applicationWillEnterForeground方法中以模态方式呈现UIViewController
NSOutputStream 发送旧值 - Objective C
在应用程序 IOS Objective C 启动时添加新的视图控制器