gpt4 book ai didi

ios - 将耗时传递给另一个 ViewController

转载 作者:行者123 更新时间:2023-11-30 11:34:16 24 4
gpt4 key购买 nike

我的游戏中有一个小的经过计时器,它运行得很好。不过,我正在尝试找出如何在你死亡时保存耗时,以便我可以将其转移到显示分数和高分的游戏结束屏幕。

我厌倦了一些事情,但似乎都不起作用。我猜这是因为游戏结束时时间没有被保存在任何地方,而是在游戏重新启动时重置为 00:00:00。

我为此计时器使用了两个 View Controller 。一个称为秒表,另一个代码位于 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
}
}

最佳答案

据我所知,您正在尝试保存 elapsedTime您的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变量到 stopButton 中的本地变量功能。

关于ios - 将耗时传递给另一个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924030/

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