gpt4 book ai didi

java - 我无法摆脱的奇怪的口吃问题(包括完整的源代码)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:12 25 4
gpt4 key购买 nike

我的游戏基于 lunarlander 示例,自从我第一次开始制作它以来就一直存在卡顿问题。我尝试过的任何方法都无法消除它们,所以我花了几个小时创建了一个精简版的 lunarlander 示例,并放入了一个简单的滚动图像来显示卡顿。注意:它与垃圾收集器无关。如果您认为是,请查看日志,垃圾收集器的运行频率几乎与卡顿出现的频率相差无几。

在我的手机(Motorola Milestone,2.2)上,向下滚动屏幕的图像大约每秒断断续续约 1/10 秒。这种卡顿并不会完全破坏游戏玩法,但会让人分心和沮丧。我的游戏还涉及大量快速滚动和快速移动,因此通常在那里更明显。

如果你们有时间可以快速浏览一下这个 eclipse 项目,看看是否:

  1. 它在您的手机上为您卡顿(滚动时仔细观察,它每半秒到半秒有一个小故障)
  2. 如果你能找到解决口吃的方法

我希望我只是有一行迟钝的代码在我没有意识到的情况下导致了这整件事。我简直不敢相信,即使去掉了这么多,它的卡顿数量仍然与我的包含 1000 个对象的完整游戏完全相同,特别是因为它在我的手机上以稳定的 60fps 运行。

编辑:在 Traceview 上分析了我的游戏,看起来不错。

源码下载链接:http://dl.dropbox.com/u/4972001/LunarLander.rar

最佳答案

我在我的手机(nexus one)上试过了,对我来说是一样的。

我做了一些改变,使它更适合我:

  1. 我没有在循环期间每次都声明新变量,而是声明类的 as 属性

    Canvas c = null;//变成

    私有(private) Canvas c;

    //在循环中现在只需使用

    c = null

对您在 doDraw 和 updatePhysics 函数中反复声明的所有变量执行此操作。

  1. 我没有将 viewY 增加到永远,而是放了一点 if 语句

    if(viewY > mCanvasHeight){

      viewY -= mCanvasHeight;   

我不确定它现在是否 100% 正常工作,但对我来说似乎好多了。

关于java - 我无法摆脱的奇怪的口吃问题(包括完整的源代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com