我有以下代码。
func random() -> CGFloat {
return CGFloat(arc4random_uniform(100))/100
}
func niceRandomColor() -> SKColor {
println(random())
return SKColor(hue: random(), saturation: 1.0, brightness: 1.0, alpha: 1.0)
}
此代码为我生成一个随机颜色,我分配给3个SKNode,每秒随机生成一个由“niceRandomColor()”生成的随机颜色。当我检查println(random())时,它会显示一个介于0.00和0.99之间的数字。
我已经为我的SKNode分配了一个名为“p1.name = random()。description”的名称。我正在尝试将SKNode名称分配给随机生成的颜色。但是,无论出于何种原因,如果颜色产生0.5,我的p1的名称将为0.7或其他。它与产生的颜色不匹配....
这是为什么?感谢
答案 0 :(得分:1)
每次拨打random()
时,您都会要求新号码。
您的println
要求提供一个随机数,而您的SKColor
初始值设定项会要求另一个。如果您想将特定号码用于多种用途,请将其保存到变量并访问变量而不是新呼叫。
如果您需要访问致电random()
的地方以外的地方,可以从SKColor
获取。例如:
var clr = niceRandomColor()
var hue: CGFloat = 0.0
var saturation: CGFloat = 0.0
var brightness: CGFloat = 0.0
var alpha: CGFloat = 0.0
if clr.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) {
println("\(hue)")
} else {
println("Call failed")
}