【问题标题】:How to stop function with Timer interval如何使用计时器间隔停止功能
【发布时间】:2023-03-30 12:13:01
【问题描述】:

我想停止这样的功能:

     - (void)update:(NSTimeInterval)currentTime
    {

    if (self.lastUpdateTimeInterval)
    {
       _dt1 = currentTime - _lastUpdateTimeInterval;

    }
    else
    {
      _dt1 = 0;
    }

    CFTimeInterval timeSinceLast = currentTime - self.lastUpdateTimeInterval;
   self.lastUpdateTimeInterval = currentTime;

    [self moveObject];
  }

我现在的计时器停止如下:[timer1 invalidate],但是如何停止按计时器间隔运行的功能?

【问题讨论】:

  • 能展示一下功能吗?
  • 可以通过调用[timer invalidate]来停止定时器;计时器=无;但它只是停止调用该函数,如果该函数已开始某些操作,例如动画或其他异步作业,您必须单独停止它。在不知道要停止什么的情况下很难说如何停止它。所以问题是你想阻止什么?
  • 你有权利。我想停止我的 Sprite Kit 动作。动作在创建 sprite kit 节点的函数中定义。但是这个函数是用这个计时器调用的。所以当我停止它一次时,它会再次克里特。

标签: objective-c nstimeinterval


【解决方案1】:

如果你想停止动画,你可以在你的精灵对象上调用 removeAllActions:

[_sprite removeAllActions];

但我认为,如果精灵尚未运行动画,您还需要运行动画。为此,您可以使用:

if (![_sprite hasActions])
{
   [_sprite runAction:action];
}

如果你只想停止一个动画(不是全部),你可以在运行动作时使用 runAction:withKey: 方法,你可以通过调用 actionForKey: 来查看动作是否正在运行,或者你可以通过调用 removeActionForKey 来停止它。

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多