0

我正在制作一个与 Pong 非常相似的简单游戏。游戏中的主要机制涉及滑动屏幕以在背景上绘制图像,然后在这两个东西之上绘制精灵。

我遇到了性能问题,我不知道为什么。除了绘制前景图像(在背景之上但在精灵之下)之外,我已经禁用了所有绘图功能。这导致了问题。

我使用的前景图像是 30kb png。我在启动时仅加载一次图像(RGB565 格式),然后使用:

@Override
public void drawImage(Image Image, int x, int y) {
    canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null);

在我的 Draw 方法中将图像绘制到画布上。由于某种原因,这运行非常缓慢(在我的 Nexus 7 上运行)。如果我改用 drawRect 方法,它可以完美运行,所以它与我绘制导入图像的方式有关。drawBitmap 是一种不好的方法吗?对于这样一个简单的游戏,我需要学习这些 OpenGL 的东西吗?

感谢您的任何建议。

4

2 回答 2

0

由于您的代码段很短,我不确定您是如何调用该方法的。

如果你要绘制一个响应性很强的 View,你应该使用 SurfaceView 在 onDraw(Canvas canvas) 方法中绘制内容。

由于您正在编写游戏,乒乓球的位置多久更新一次?此更新是在 AsyncTask 还是 Runnable 中执行的?只有在精灵的位置更新时,您才可以通过调用 invalidate() 来减少对 onDraw 的过度调用。

于 2014-12-04T15:50:13.667 回答
0

如果有人有这个问题,我的情况可能是相关的,但可能不是。

我使用 4mb wav 文件作为标题页的主题曲,并且在游戏开始时忘记释放内存。我现在的fps越来越流畅了!

于 2013-02-25T07:37:45.570 回答