[英]Generating Random Color and Assigning it to object
I want to make Obstacle_Color = random
color instead of blackcolor . 我想使Obstacle_Color = random
color而不是blackcolor 。 I found random color implementation but couldn't merge `Obstacle_Color with the return val of rand method. 我找到了随机的颜色实现,但是无法将`Obstacle_Color与rand方法的返回值合并。 Thanks in advance! 提前致谢!
import Foundation
import SpriteKit
class AKObstacle: SKSpriteNode {
let Obstacle_Width: CGFloat = 40.0
let Obstacle_Height: CGFloat = 70.0
let Obstacle_Color = UIColor.blackColor()
init(){
let size = CGSizeMake(Obstacle_Width, Obstacle_Height)
super.init(texture: nil, color: Obstacle_Color, size: size)
loadPhysicsBoadyWithSize(size)
startMoving()
}
func getRandomColor() -> UIColor{
var randomRed:CGFloat = CGFloat(drand48())
var randomGreen:CGFloat = CGFloat(drand48())
var randomBlue:CGFloat = CGFloat(drand48())
return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0)
}
One solution would be to make get randomcolor a static function and call it as a class method. 一种解决方案是将getrandomcolor设为静态函数,并将其称为类方法。 Another one (probably better, since that function doesn't seem to be specifically linked to that class) is to make it a public method. 另一个(可能更好,因为该函数似乎没有专门链接到该类)可能是使其成为一个公共方法。 Also someone else suggested to call it in the constructor, which also works. 也有人建议在构造函数中调用它,这也有效。
import UIKit
import Foundation
import SpriteKit
class AKObstacle: SKSpriteNode {
let Obstacle_Width: CGFloat = 40.0
let Obstacle_Height: CGFloat = 70.0
let Obstacle_Color = AKObstacle.getRandomColor()
init() { ... }
static func getRandomColor() -> UIColor {
var randomRed:CGFloat = CGFloat(drand48())
var randomGreen:CGFloat = CGFloat(drand48())
var randomBlue:CGFloat = CGFloat(drand48())
return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0)
}
}
import UIKit
import Foundation
import SpriteKit
class AKObstacle: SKSpriteNode {
let Obstacle_Width: CGFloat = 40.0
let Obstacle_Height: CGFloat = 70.0
let Obstacle_Color = getRandomColor()
init() {...}
}
public func getRandomColor() -> UIColor {
var randomRed:CGFloat = CGFloat(drand48())
var randomGreen:CGFloat = CGFloat(drand48())
var randomBlue:CGFloat = CGFloat(drand48())
return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0)
}
你可以说
super.init(texture: nil, color: getRandomColor(), size: size)
You can't use self
before super.init
call. 在super.init
调用之前不能使用self
。 You can implement an extension of UIColor
class 您可以实现UIColor
类的扩展
class MyClass: SKSpriteNode {
let Obstacle_Width: CGFloat = 40.0
let Obstacle_Height: CGFloat = 70.0
init(){
let size = CGSizeMake(Obstacle_Width, Obstacle_Height)
super.init(texture: nil, color: UIColor.Obstacle_Color(), size: size)
}
}
extension UIColor{
class func Obstacle_Color() -> UIColor {
var randomRed:CGFloat = CGFloat(drand48())
var randomGreen:CGFloat = CGFloat(drand48())
var randomBlue:CGFloat = CGFloat(drand48())
return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.