【问题标题】:Extra long frame times in openfl/flashopenfl/flash 中的超长帧时间
【发布时间】:2014-02-19 01:41:23
【问题描述】:

我正在 haxe/openfl 中构建一个库来制作游戏,我注意到精灵的移动有些抖动,尤其是在 android 上运行或设置为调试的 flash 时,以及在我的上使用 trace(elapsed) 之后代码我注意到每隔几帧就会出现大量峰值,我认为这是导致抽搐的原因:

Game.hx:64: 0.030999999999998806
**Game.hx:64: 0.0470000000000006**
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.03100000000000236
Game.hx:64: 0.03200000000000003
**Game.hx:64: 0.045999999999999375**
Game.hx:64: 0.03200000000000003
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.03100000000000236
Game.hx:64: 0.03200000000000003
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.03100000000000236
**Game.hx:64: 0.0470000000000006**
Game.hx:64: 0.03200000000000003
Game.hx:64: 0.030999999999998806
Game.hx:64: 0.030999999999998806

这是用于确定经过时间的代码:

private function UpdateElapsedTime()
    {
        var current = Lib.getTimer() / 1000.0;
        elapsed = current - lastElapsed;
        lastElapsed = current;
    }

谁能指出哪里出了问题,或者我可以做些什么来改进它, 谢谢, 妮可

【问题讨论】:

    标签: android flash time haxe


    【解决方案1】:

    这可能是由垃圾收集器引起的,使用 Adob​​e Scout 应该可以帮助您尝试理解问题。

    如果您不想使用 Adob​​e Scout,或者只想始终拥有一个小“基准”,您可以使用 https://github.com/mrdoob/Hi-ReS-Stats,它会显示所用内存的小图表和 FPS,这将帮助您发现当垃圾收集器“收集”时(您会看到使用的内存在减少),您可以在不使用跟踪的情况下检测慢帧。

    【讨论】:

    • 嗯嗯,我不认为是这样,虽然它偶尔会转储内存,但并不经常,而口吃每秒不止一次,但我会标记你的回答正确,因为它很好,而且统计监视器很方便....虽然它对我没有用,但 xml 声明中的某些内容是错误的,所以我做了一个快速而肮脏的 hack,并将其显示为标准文本
    • 如果统计数据没有帮助,我真的建议你使用 scout,它应该仍然是免费的,但你需要创建一个 Adob​​e 帐户并在编译时添加一个标志,但它非常值得它,它帮助我优化了过去的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多