不断改变精灵套件中精灵的颜色

时间:2017-03-14 19:54:42

标签: ios swift sprite-kit

我想让我的精灵在循环中平滑地改变它的颜色。但是,我能找到的所有东西都使用了UIKit。有没有办法在不使用UI工具包的情况下执行此操作。这是我想要的,但在UIKit:

 let red   = Float((arc4random() % 256)) / 255.0
    let green = Float((arc4random() % 256)) / 255.0
    let blue  = Float((arc4random() % 256)) / 255.0
    let alpha = Float(1.0)

    UIView.animate(withDuration: 1.0, delay: 0.0, options:[.repeat, .autoreverse], animations: {
        self.view.backgroundColor = UIColor(colorLiteralRed: red, green: green, blue: blue, alpha: alpha)
    }, completion:nil)

提前致谢。

1 个答案:

答案 0 :(得分:2)

你可以使用这样的东西来改变背景。您可以将getRandomColor作为扩展名移动到UIColor中,以便在项目中使用它。

override func sceneDidLoad() {

    func getRandomColor() -> UIColor {
        return UIColor.init(red: CGFloat(arc4random()) / CGFloat(UInt32.max),
                            green: CGFloat(arc4random()) / CGFloat(UInt32.max),
                            blue: CGFloat(arc4random()) / CGFloat(UInt32.max),
                            alpha: 1)
    }

    if let frame = self.scene?.frame {
        let background = SKSpriteNode(color: .blue,
                                      size: CGSize(width: frame.width, 
                                                   height: frame.height))

        background.run(SKAction.repeatForever(
            SKAction.sequence([
                SKAction.run {
                    background.run(SKAction.colorize(with: getRandomColor(),
                                                     colorBlendFactor: 1,
                                                     duration: 1))
                },
                SKAction.wait(forDuration: 1)])
        ))

        self.addChild(background)
    }

}