Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何计算得分速度?_Ios_Swift_Timer_Swift3 - Fatal编程技术网

Ios 如何计算得分速度?

Ios 如何计算得分速度?,ios,swift,timer,swift3,Ios,Swift,Timer,Swift3,我试图计算玩家累积分数的速度,以便为游戏设置不同的属性。然而,我仍然停留在逻辑上,想知道如何做到这一点,以便它能够根据当前输入不断更新 为了清理这些东西,我创建了一个空白的Swift Xcode项目,其中有一个按钮和两个标签——一个表示分数,一个表示速度(scoreSpeed) 现在的问题是显示的速度为0,显然是因为它无法计算第一个得分位置(scorePos1)和第二个得分位置(scorePos2)之间的差值。我有一种感觉,这与不正确的“获取”分数值有关(或不正确的分数位置) 我是初学者,所以也

我试图计算玩家累积分数的速度,以便为游戏设置不同的属性。然而,我仍然停留在逻辑上,想知道如何做到这一点,以便它能够根据当前输入不断更新

为了清理这些东西,我创建了一个空白的Swift Xcode项目,其中有一个按钮和两个标签——一个表示分数,一个表示速度(scoreSpeed)

现在的问题是显示的速度为0,显然是因为它无法计算第一个得分位置(scorePos1)和第二个得分位置(scorePos2)之间的差值。我有一种感觉,这与不正确的“获取”分数值有关(或不正确的分数位置)

我是初学者,所以也许有更好的方法

以下是我的ViewController中的代码:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        startTimer()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    var score = Double()
    var scorePos1 = Double()
    var scorePos2 = Double()
    var scoreSpeed = Double()
    var timerInt: Double = 5.0

    @IBOutlet weak var scoreLabel: UILabel!
    @IBOutlet weak var speedLabel: UILabel!
    @IBAction func Button(_ sender: Any) {
        score += 1.0
        scoreLabel.text = "Score: \(score)"
        scorePos1 = score
    }

    var speedTimer = Timer()

    func startTimer(){
        //speedTimer.invalidate()
        speedTimer = Timer.scheduledTimer(timeInterval: timerInt, target: self, selector: #selector(calcSpeed), userInfo: nil, repeats: true)
    }

    func calcSpeed(){
        scorePos2 = score
        scoreSpeed = (scorePos2 - scorePos1)/timerInt
        speedLabel.text = "Speed: \(scoreSpeed)"
    }
}

您按下的按钮将
scorePos1
设置为
score
,您的
calcSpeed
功能将
scorePos2
设置为
score
,因此它们都是分数

计算速度后,将
scorePos2
设置为得分

而且,会是

scorePos1 - scorePos2

如果
scorePos2
是历史帐户。

为什么在
viewDidLoad
中调用此方法
startTimer()
,因为它将始终返回0。其次,您必须将
scorePos2
scorePos1
都分配给
score
。所以,永远都会有不同的意见!我定义了另一个具有不同间隔的计时器,该计时器具有获取历史变量的唯一功能,并将计算更改为
scorePos1-scorePos2
。我仍然想知道是否没有其他方法可以在内存中短期存储变量。