0

目前,我正在为我的国际象棋游戏使用 SurfaceView 进行动画实验。我在模拟器中只得到大约 8 FPS。我画了一个棋盘和 32 个棋子并旋转所有东西(看看它有多平滑),我正在使用抗锯齿。在 Droid 上,我得到了大约 20FPS,所以它不是很流畅。是否可以在不使用OpenGL的情况下实现具有非常稀缺和简单动画的游戏?

这就是我每帧所做的:

// scale and rotate
matrix.setScale(scale, scale);
rotation += 3;
matrix.postRotate(rotation, 152, 152);

canvas = surfaceHolder.lockCanvas();
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG));
canvas.setMatrix(matrix);

canvas.drawARGB(255, 255, 255, 255); // fill the canvas with white
for (int i = 0; i < sprites.size(); i++) {
    sprites.get(i).draw(canvas); // draws chessboard and chess pieces
}
4

2 回答 2

3

我决定在创建 SurfaceView 时预缩放所有位图。现在我根本不需要使用转换矩阵。我在模拟器和实际设备(Droid)上获得了超过 30 FPS 的速度,它完全流畅。我还删除canvas.drawARGB(255, 255, 255, 255);了将 FPS 提高了约 5 的内容。

于 2010-03-28T17:54:05.620 回答
0

我们能看到更多的代码吗?你的棋子图标是多大的?您可能会考虑降低它们的质量以减少绘制时间。您还可以限制要加载的图标数量(为每种颜色加载每种类型的图标),然后让矩阵存储要为每个正方形加载的图标类型。

于 2010-03-27T12:43:56.570 回答