我正在处理一个非常奇怪的项目。当我尝试显示已经工作的图像的副本时,帧率下降可怕。我已经尝试为备用图像制作第二个构造函数,复制图像并显示副本等。无论我做什么,问题仍然存在。 Here's the project.不断破坏帧率的代码行在“Game”中,如下所示:
a2.display();
如果删除该行,帧速率将恢复正常。
答案 0 :(得分:2)
应该在类构造函数或setup函数中调用函数loadImage()
。该功能很慢,只需要在游戏开始时调用一次,从磁盘加载图像。事实上,这就是为什么游戏在启动一个关卡时会有加载屏幕的原因,因为它们正在从磁盘加载所有图像和资源,这需要时间。
具体来说:将img = loadImage("PurpleSpaceship.png");
移出display()
函数并改为Ship(int x, int y, int w, int h)
函数。
关于优化的主题,你可以有一个变量来保存图像,在类之外,即使有许多船也只加载一次。但是,你的课程实例将分享这些数据。随着您的程序变得更大,更复杂,共享可能会导致错误和混乱。或者一般来说,优化代码往往会降低其稳定性并产生问题,因此,寻求妥协并找到足够的"优化