我正在玩一个简单的游戏,如果用户进入后台,游戏开始时必须隐藏玩家精灵节点。
我的代码如下:
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
}
- (void)appDidEnterBackground:(NSNotification *)notification
{
[self hidePlayerNode];
}
- (void)hidePlayerNode
{
[self.playerNode runAction:[SKAction fadeOutWithDuration:0.0]];
}
问题是,当游戏从后台启动时,我可以看到玩家节点一瞬间然后消失。我需要让播放器节点不可见,一旦它进入后台,用户在重新启动应用程序时就不应该看到它。
我尝试使用UIApplicationWillResignActiveNotification
但结果是一样的。此外,我尝试通过主线程在选择器方法内运行代码,但同样的结果。
答案 0 :(得分:1)
您可能会看到当您进入后台时保存的应用状态。
Apple文档:"当您的applicationDidEnterBackground:方法返回时,系统会拍摄应用程序用户界面的图片,并将生成的图像用于过渡动画。如果界面中的任何视图包含敏感信息,则应在applicationDidEnterBackground:方法返回之前隐藏或修改这些视图。"