首页 > 解决方案 > 如何在 Spritekit 中实现开关按钮?

问题描述

我正在尝试实现打开/关闭按钮。问题是,如果我多次触摸该位置,应用程序就会冻结。有没有办法实现切换按钮?

// Disabled / Enabled Photo
if (photoSwitch?.contains(location))! {
    Sound.play(file: "switch", fileExtension: "mp3", numberOfLoops: 0)
    if photoToggle == true {
        UserDefaults.standard.set(true, forKey: "photoSwitch")
        defaults.synchronize()
        photoToggle = false
        photoOn?.alpha = 1
        photoOff?.alpha = 0
        print("on")
    } else if photoToggle == false {
        UserDefaults.standard.set(false, forKey: "photoSwitch")
        defaults.synchronize()
        photoToggle = true
        photoOn?.alpha = 0
        photoOff?.alpha = 1
        print("off")
    }
}

标签: swiftsprite-kit

解决方案


我所做的 2 个假设是您在 touchesBegan 中调用此代码,并且 photoToggle 是在场景级别设置的 Bool。

defaults.synchronize()Apple 建议不要在每次更改值时调用,它会自动完成

此代码用作切换,并且不会冻结。

private var photoToggle = false

开始接触

if photoSwitch?.contains(location) {

    Sound.play(file: "switch", fileExtension: "mp3", numberOfLoops: 0)

    UserDefaults.standard.set(!photoToggle , forKey: "photoSwitch")

    photoToggle = !photoToggle
    photoOn?.isHidden = photoToggle 
    photoOff?.isHidden = !photoToggle
    print(photoToggle ? "on" : "off")
}

推荐阅读