gpt4 book ai didi

ios - 如何在swift 2中设置随机颜色的计时器?

转载 作者:行者123 更新时间:2023-12-01 20:20:26 25 4
gpt4 key购买 nike

我想设置计时器并每 5 秒更改一次背景颜色。

我写了随机颜色的代码,它的工作很完美,但我试图把这个函数放在 NSTimer 中,我被迷住了。

2016-03-05 14:46:48.774 Boo Adventure[6782:365555] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Boo_Adventure.GameScene update]: unrecognized selector sent to instance 0x7fe2cb741ac0'



游戏场景:
extension CGFloat {
static func random() -> CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}


extension UIColor {
static func randomColor() -> UIColor {
let r = CGFloat.random()
let g = CGFloat.random()
let b = CGFloat.random()

// If you wanted a random alpha, just create another
// random number for that too.
return UIColor(red: r, green: g, blue: b, alpha: 2.5)
}
}

override func didMoveToView(view: SKView) {

Timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "update", userInfo: nil, repeats: false)

func update() {

self.view!.backgroundColor = UIColor.randomColor()

}
}

谢谢!

最佳答案

这里有几个问题:

1) 你想每 5 秒改变一次颜色,但是你设置了 repeats false 的参数,因此您的自定义 update() 方法将只执行一次。更改repeatstrue .

2)您正在尝试更改 View (SKView)的背景颜色,而不是场景的背景颜色。

以下是使用 NSTimer 的方法:

override func didMoveToView(view: SKView) {
let timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)
}

func update(){
backgroundColor = UIColor.randomColor()
}

但是 NSTimer不受场景或 View 暂停状态的影响,因此在某些情况下可能会给您带来麻烦。为避免这种情况,您可以使用 SKAction .使用 SKAction 完成的相同操作如下所示:
override func didMoveToView(view: SKView) {

let wait = SKAction.waitForDuration(5)

let block = SKAction.runBlock({
[unowned self] in
self.backgroundColor = UIColor.randomColor()
})

let sequence = SKAction.sequence([wait,block])

runAction(SKAction.repeatActionForever(sequence), withKey: "colorizing")

}

这样,如果您暂停场景或 View ,着色操作将自动暂停(并在场景/ View 取消暂停时取消暂停)。

关于ios - 如何在swift 2中设置随机颜色的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35814398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com