【问题标题】:How to know the time interval between two dates in swift如何快速知道两个日期之间的时间间隔
【发布时间】:2021-04-02 01:50:23
【问题描述】:

所以我正在开发一款 AR 应用。每 3 秒就会在玩家所在的房间周围出现一个新节点,直到创建 25 个节点。在创建节点时,用户必须在节点创建后立即销毁它们。但是我想在用户销毁的第一个节点和最后一个节点之间创建一个时间间隔,这样我就可以向用户显示这样做所花费的时间,跟踪高分等等。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let touch = touches.first else {return}
    
        let location = touch.location(in: self)
        let node = nodes(at: location)
        
        if let sprite = node.first {
        let scaleOut = SKAction.scale(to: 3, duration: 0.4)
        let fadeOut = SKAction.fadeOut(withDuration: 0.4)
            let remove = SKAction.removeFromParent()
        let group = SKAction.group([scaleOut, fadeOut])
        let sequence = SKAction.sequence([group, remove])
            sprite.run(sequence)
            targetCount -= 1
        
    }

guard 语句确保计算机可以捕获用户所做的第一次触摸,然后该触摸将其保存在一个变量中,并参考该触摸在视图中的位置。然后,如果该位置有任何节点,则将使用 SKActions 使用动画将第一个节点删除。如果我需要更具体,请告诉我。提前致谢。

【问题讨论】:

  • 所以基本上你有一个时间戳属性,你在第一个节点被触摸时设置,然后你有一个时间戳或间隔属性,你在最后一个节点被触摸时设置/计算。您需要确定代码中的哪个位置来执行此操作,我猜touchesBegan 可以用于这两种操作。

标签: ios swift xcode augmented-reality


【解决方案1】:

我认为您想要做的是:

let startTime = Date()

/* Then some time later */

let timeInterval = Date().timeIntervalSince(startTime)

timeIntervalTimeInterval,它是Double 的类型别名。这是两个Date 实例之间的秒数。

另一方面,如果您想要做的实际上是延迟做某事,但实际上不需要 timeInterval 出于其他任何原因,请查看DispatchSemphore.wait(timeout:)DispatchQueue.asyncAfter(...)

【讨论】:

  • 我在想这个,但我不知道该放在哪里。我有两个变量,一个是计算创建的节点,另一个是计算用户销毁的节点。所以我正在考虑添加一个 if 语句,例如“if targetsCreated == 25,然后我输入 startTime,但 var 只能在该语句中使用。
  • 它可以是你覆盖touchesBegan(_: with:)的对象的属性吗?
  • 你能说得更清楚些吗?我不知道你到底是什么意思
  • 您说您的 var 只能在您正在考虑的 if 语句中使用。如果 var 被移出函数并将函数的属性放入任何 UIResponder(可能是您的视图)中,那么它将在事件之间持续存在并可供下一个事件使用。
猜你喜欢
  • 2023-01-16
  • 2022-01-22
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多