【问题标题】:How to create NSUserdefaults to image button in spritekit如何在 spritekit 中创建 NSUserdefaults 到图像按钮
【发布时间】:2016-08-01 02:52:23
【问题描述】:

我在主场景中有声音按钮(开/关),它工作得很好 但是我有问题,在我被取消资格时关闭背景音乐播放我返回主屏幕,但按钮的图像改变了音乐打开并保持在音乐图像关闭。

主场景:

var SoundOnOff = SKSpriteNode()

override func didMoveToView(view: SKView) {

    backgroundColor = UIColor(red:0.09, green:0.63, blue:0.52, alpha:1.0)


    //Main Scene:

    SoundOnOff.texture = SKTexture(imageNamed:"Sound-on.png")
    SoundOnOff.position = CGPoint(x: self.size.width/2 - 40 , y: self.size.height/2 - 500)
    SoundOnOff.size = CGSizeMake(60 , 60)
    SoundOnOff.runAction(SKAction.moveToY(140, duration: 0.5))
    SoundOnOff.removeFromParent()
    addChild(SoundOnOff)


   }

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    let touch = touches.first
    let location = touch!.locationInNode(self)



    if(SoundOnOff.containsPoint(location)) {
            // ---------------------------------------------
            // Play Background Music
            // ---------------------------------------------

 if ((NSUserDefaults.standardUserDefaults().objectForKey("onoroff")) !== true)
            {
                NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
                    Singleton.sharedInstance().pauseBackgroundMusic()
                    SoundOnOff.texture = SKTexture(imageNamed:"Sound-off.png")

                }else {
                    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
                    Singleton.sharedInstance().resumeBackgroundMusic()
                    SoundOnOff.texture = SKTexture(imageNamed:"Sound-on.png")
                }
            }
        }  }

    }

【问题讨论】:

  • 更具体...您是说当您触摸按钮时按钮可以工作,但是当您返回主屏幕(可能是另一个场景)时显示错误的按钮纹理?
  • 按钮纹理磨损。
  • :) 好的,我已经想通了。我要求您更具体地了解您遇到问题的部分代码。那么,touchesBegan 中的这段代码对你有用吗?如果是,什么是不起作用的代码。如果没有,好吧,我会更仔细地研究它......
  • 我将发送视频链接。我的声音按钮出了什么问题。
  • 好吧...那会很有帮助。

标签: ios swift2 nsuserdefaults


【解决方案1】:

基本上,如果音乐关闭或打开,您必须检查菜单场景,并在此基础上显示适当的纹理。现在,您似乎没有在菜单场景中进行检查。

提示:显然,您的Singleton 类已作为单例实现。如果一切都正确完成,它会在整个应用程序的整个生命周期中被实例化一次并活着。所以它有一个关于音乐开/关状态的信息。我想指出的是,当应用程序关闭时,这个单例会被释放。因此,在此之前,您可以将有关音乐开/关的信息存储到持久存储中,例如 NSUserDefaults,这样下次用户打开应用程序时,他的设置就会保存下来。不过……这真的取决于您以及您希望在应用中提供什么。

【讨论】:

  • 我想保存打开或关闭,下次用户打开应用程序时,他的设置已保存。你可以帮我写
  • @OmerHarel 这只是简单地读取/写入用户默认值。 SO上有很多关于那个的帖子......
  • 这是我完成游戏所需的全部内容。
  • @OmerHarel 阅读此答案。这真的很简单。 stackoverflow.com/a/31070325/3402095 基本上,您在应用程序启动时从用户默认值中读取。根据该信息,您可以使用 Singleton 类运行播放器。之后,您以通常的方式使用您的应用程序(就像您现在所做的那样),这意味着不再需要从默认值中读取。当应用程序即将关闭时,需要下一次更新默认值。
  • @Whirewind 你给我发了链接,我在这里编辑了我的代码,但它不起作用
猜你喜欢
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多