我的游戏中有一个小的计时器,它运行得很好。但是我想弄清楚如何在你死的时候节省经过的时间,这样我就可以把它带到屏幕上显示得分和高分的游戏。
我厌倦了一些事情,但似乎都没有。我想这是因为当比赛结束时,时间没有被保存到任何地方,而是在比赛重新开始时重置为00:00:00。
我为这个计时器使用两个视图控制器。一个叫做秒表,其他代码在GameScene中。这是代码。
我想将它带入一个标签,例如:
let timeLabel = SKLabelNode(fontNamed: "Planer")
timeLabel.text = "Time: \(savedTimer)"
timeLabel.fontSize = 100
timeLabel.fontColor = SKColor.white
timeLabel.zPosition = 2
timeLabel.position = CGPoint (x: self.size.width/2, y: self.size.height * 0.5)
self.addChild(timeLabel)*/
Stopwatch.swift代码
import Foundation
class Stopwatch {
private var startTime : Date?
var elapsedTime: TimeInterval {
if let startTime = self.startTime {
return -startTime.timeIntervalSinceNow
} else {
return 0
}
}
var isRunning: Bool {
return startTime != nil
}
func start() {
startTime = Date()
}
func stop() {
startTime = nil
}
}
我通过游戏场景加速了代码:
import UIKit
class ViewController: UIViewController {
private let formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "mm:ss:SS"
return formatter
}()
let watch = Stopwatch()
@IBOutlet weak var elapsedTimeLabel: UILabel!
@IBAction func startButton(_ sender: Any) {
Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(self.updateElapsedTimeLabel), userInfo: nil, repeats: true)
watch.start()
}
@IBAction func stopButton(_ sender: Any) {
watch.stop()
}
@objc func updateElapsedTimeLabel (timer : Timer) {
if watch.isRunning {
elapsedTimeLabel.text = formatter.string(from: Date(timeIntervalSince1970: watch.elapsedTime))
} else {
timer.invalidate()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override var prefersStatusBarHidden: Bool {
return true
}
}
答案 0 :(得分:0)
我的理解是,您尝试在用户点按停止按钮后保存elapsedTime
的{{1}}。如果是这种情况,请在watch
函数中调用stopButton
,然后重置watch.stop()
。所以你可能想要编辑它:
startTime = nil
如果您不需要在// Create a new class variable to store the time
var savedTime: TimeInterval? = nil
@IBAction func stopButton(_ sender: Any) {
savedTime = watch.elapsedTime
// Use the savedTime here to pass to the game over function
watch.stop()
}
课程中节省时间,可以将ViewController
变量移至savedTime
函数中的本地变量。