【问题标题】:What happens to Flutter Ticker if the UI misses frames due to bad performances?如果 UI 由于性能不佳而丢失帧,Flutter Ticker 会发生什么?
【发布时间】:2021-12-19 03:46:32
【问题描述】:

我在Ticker class documentation 上看到:

“Ticker 类在每个动画帧调用一次它的回调。”

我正在使用createTicker(TickerCallback onTick) 来实现秒表。所以我需要传递给TickerCallback 的 elapsed 变量非常精确(即我需要在 5 秒后,elapsed 的值正好是 5 秒)。

现在我的问题是:如果我的 UI 缓慢且编码非常糟糕,并且由于优化不当而错过了很多帧,会发生什么?我能想到2种情况:

  1. 秒表的时间更新不是 60fps(因为我的编码错误),但一旦更新,显示的时间是正确的
  2. 显示的时间有误
  3. 其他?

是什么情况?为什么(最重要的是)?另外,考虑到上述情况,是否建议使用ticker作为秒表?谢谢

【问题讨论】:

标签: flutter dart animation flutter-animation frame-rate


【解决方案1】:

回答您的问题:

1.秒表的时间更新不是60fps(因为我的编码不好),但是一旦更新,显示的时间是正确的。

如果手机以 120 fps 的速度工作,这是否意味着它会提前 :)

Flutter 旨在提供每秒 60 帧 (fps) 的性能,或在支持 120Hz 更新的设备上提供 120 fps 的性能。对于 60fps,帧需要大约每 16ms 渲染一次。当 UI 渲染不流畅时会发生卡顿。

所以你可以使用ticker,即使动画很慢,它仍然会显示正确的时间。就像假设我们在第 500 帧上有一些延迟,它们将是动画的延迟,而不是经过的时间。就像在第 3 秒,我们有 1 秒的延迟,之后我们将有 5 秒,它会更新屏幕,但计时器会继续。

另外,考虑到上述情况,是否建议使用ticker 作为秒表?

是的。在最坏的情况下,您会出现丢帧、跳秒,但计时器将是准确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多