在后台重置精灵节点

时间:2015-03-23 17:14:24

标签: ios objective-c sprite-kit

我正在玩一个简单的游戏,如果用户进入后台,游戏开始时必须隐藏玩家精灵节点。

我的代码如下:

- (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但结果是一样的。此外,我尝试通过主线程在选择器方法内运行代码,但同样的结果。

1 个答案:

答案 0 :(得分:1)

您可能会看到当您进入后台时保存的应用状态。

Apple文档:"当您的applicationDidEnterBackground:方法返回时,系统会拍摄应用程序用户界面的图片,并将生成的图像用于过渡动画。如果界面中的任何视图包含敏感信息,则应在applicationDidEnterBackground:方法返回之前隐藏或修改这些视图。"