我正在用 java 创建一个自定义界面屏幕。该界面屏幕的一部分获取给定的图像,然后将其随机分成给定数量的部分,然后通过轻微的移动将它们绘制在屏幕上。在它的顶部绘制了一个覆盖层,它掩盖了下面发生的大部分事情。这显然是非常低效的,因为无法看到正在绘制的大部分内容,并且(我认为)它会导致界面屏幕在第一次启动时短暂停止。我修改了代码,以便仅绘制可以通过覆盖层看到的部分,期望这可以解决启动时减速的问题,但事实并非如此。
当我打印出我的绘制循环的时间时,前三个时间很长:大约 500 毫秒,然后是 300 毫秒,然后是 20 毫秒,其余时间是稳定的 16 毫秒(或 60 fps)。
是否还有其他可能导致开始时速度变慢的原因?java是否有可能在前1000毫秒左右优化我的绘图,以便它可以在其余时间以16毫秒运行?(就像意识到无法看到某些正在绘制的内容,然后进行优化,因此实际上并不是每次更新都绘制它) - 我真的不知道我对可能导致这种情况的原因有些想法。
我已经彻底检查以确保更新开始后没有加载任何对象/线程/资产,这是我唯一能想到的。
非常感谢任何帮助。