嗨我在游戏中完成游戏,但是我想添加一些细节,其中一个正在循环通过一个颜色循环我尝试过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个大,但看起来并不总是很好
感谢
答案 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。