在swift中不断改变背景颜色

时间:2014-08-29 15:48:36

标签: colors swift sprite-kit xcode6 spectrum

嗨我在游戏中完成游戏,但是我想添加一些细节,其中一个正在循环通过一个颜色循环我尝试过SKActions,它工作正常,但它与其他所有内容重叠。

然后我在更新功能中做了这个,但它没有做任何事情

if BGRed == 1 {RedBoolIs1 = true}
        else {RedBoolIs1 = false}

        if BGGreen == 1 {GreenBoolIs1 = true}
        else {GreenBoolIs1 = false}

        if BGBlue == 1 {BlueBoolIs1 = true}
        else {BlueBoolIs1 = false}


        //red only
        if RedBoolIs1 == true && GreenBoolIs1 == false && BlueBoolIs1 == false {
            BGGreen = BGGreen + 0.01 }
        //red and green
        if RedBoolIs1 == true && GreenBoolIs1 == true && BlueBoolIs1 == false {
            BGRed = BGRed - 0.01  }
        //green only
        if RedBoolIs1 == false && GreenBoolIs1 == true && BlueBoolIs1 == false {
            BGBlue = BGBlue + 0.01  }
        //green and blue
        if RedBoolIs1 == false && GreenBoolIs1 == true && BlueBoolIs1 == true {
            BGGreen = BGGreen - 0.01  }
        //blue only
        if RedBoolIs1 == false && GreenBoolIs1 == false && BlueBoolIs1 == true {
            BGRed = BGRed + 0.01  }
        //blue and red
        if RedBoolIs1 == true && GreenBoolIs1 == false && BlueBoolIs1 == true {
            BGBlue = BGBlue - 0.01  }

        self.backgroundColor = SKColor(red: CGFloat(BGRed), green: CGFloat(BGGreen), blue: CGFloat(BGBlue), alpha: 1)

是否可以使标签在所有颜色上都可读?我现在的解决方案是在彼此上放置2个标签,第一个是白色,45个大,上面一个是黑色,40个大,但看起来并不总是很好

感谢

1 个答案:

答案 0 :(得分:0)

首先我们初始化颜色变量,如下所示:

var BGRed: Float = 1
var BGGreen: Float = 0
var BGBlue: Float = 0

没有任何反应的原因是添加0.1 10次不等于1.0。这是因为浮点数的准确性。我自己问了同一类型的SO question

要解决此问题,请删除以下比较:

if BGGreen == 1 

并替换为:

if round(BGGreen * 100) / 100.0 == 1.0

它将解决这个特殊问题,但更好的方法是开始使用decimal floating point

对于第二个问题,没有简单的答案,但SO上有多个答案,如one