代码之家  ›  专栏  ›  技术社区  ›  ddalcanto

添加重复图像可大大降低帧率

  •  0
  • ddalcanto  · 技术社区  · 6 年前

    我在做一个项目时遇到了一个非常奇怪的问题。当我试图显示一个已经工作的图像的副本时,帧速率会急剧下降。我试着为备用图像制作第二个构造器,复制图像并显示副本,等等。。不管我做什么,这个问题仍然存在。 Here's the project. 不断破坏帧率的代码行位于“Game”内部,如下所示:

    a2.display();
    

    如果删除该行,帧速率将恢复正常。

    1 回复  |  直到 6 年前
        1
  •  2
  •   MichaelsonBritt    6 年前

    功能 loadImage() 应在类构造函数或setup函数内调用。该函数速度很慢,只需在游戏开始时调用一次,即可从磁盘加载图像。事实上,这就是为什么游戏在启动关卡时会有加载屏幕的原因,因为它们从磁盘加载所有图像和资产,这需要时间。

    特别是:移动 img = loadImage("PurpleSpaceship.png"); 超出 display() 函数和 Ship(int x, int y, int w, int h) 功能。

    关于优化主题,您可以有一个单独的变量来保存类外的图像,即使有许多船,也只能加载一次。但是,您类的实例将共享该数据。共享可能会导致错误和混乱,因为您的程序越来越大,越来越复杂。或者一般来说,优化代码往往会降低其稳定性并产生问题,因此,最好寻求折衷方案并找到“刚刚足够”的优化。