在我的游戏中,我需要实现一个30秒计时器,当我点击时启动 屏幕,以便如果玩家在计时器达到0之前没有达到目标,则游戏结束。
我无法弄清楚如何在触摸屏幕后将计时器数降至零,它只会保持在30秒。我尝试使用NStimer,但我知道你必须添加一个我不想要的PAUSE功能,加上NStimer在我触摸屏幕之前倒数,这也是我不想要的。< / p>
到目前为止,这是我的代码:
var TimerNode: Int = 30
var TimerLabel = SKLabelNode(fontNamed: "STHeitJ-Medium")
TimerLabel.text = "\(TimerNode)"
TimerLabel.fontSize = 40
TimerLabel.position.x = size.width / 2
TimerLabel.position.y = size.height / 8.5
TimerLabel.zPosition = 3.00
TimerLabel.fontColor = UIColor.whiteColor()
addChild(TimerLabel)
答案 0 :(得分:0)
self.addChild(myLabel)
您可以实现这样的计时器:
//Timer that updates Label:
myLabel.run(SKAction.repeatForever(SKAction.sequence([SKAction.run {
TimerNode -= 1
TimerLabel.text = "\(TimerNode)"
if TimerNode <= 0 {
//Game Over code
}
},SKAction.wait(forDuration: 1)])))
旧:
//Run when clicked:
var wait = SKAction.waitForDuration(30)
var run = SKAction.runBlock {
//Game Over
}
self.runAction(SKAction.sequence([wait, run]))
答案 1 :(得分:0)
// ----- TIMER 2 Sec. ------
removeAction(forKey: "Timer") // Timer delete
var time = 20 // start counter
self.run(SKAction.repeat(SKAction.sequence([SKAction.run {
time -= 1
print("\(time)")
if time <= 0 {
// start your code here!
}
},SKAction.wait(forDuration: 0.1)]), count: time), withKey: "Timer")