2010-03-21 24 views
0

目前我正在用我的国际象棋游戏与动画实验SurfaceView。我在仿真器中只获得大约8个FPS。我画一个国际象棋棋盘和32个棋子,并旋转一切(看看它是多么光滑),我正在使用抗锯齿。在Droid上,我获得了大约20FPS,所以它不是很流畅。是否有可能实现一个非常稀缺和简单的动画游戏,而无需使用OpenGL?我应该使用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 
} 
+0

如果你打算使用动画,我认为你应该使用openGL。没有抗锯齿功能,您的游戏速度会快多少?这可能是一个巨大的资源霍格。你也可以在NDK中做openGL绘图。并且不要将模拟器的速度作为真实设备的标志。 – MrSnowflake 2010-03-21 18:09:53

回答

3

我决定在SurfaceView创建时对所有位图进行预分频。现在我根本不需要使用变换矩阵。我在仿真器和实际设备(Droid)上获得了超过30 FPS,它完全平滑。我也删除了canvas.drawARGB(255, 255, 255, 255);,其中FPS增加了约5个。

0

我们能看到更多的代码?你的棋子图标大小是多少?您可能会考虑降低其质量以缩短抽奖时间。您还可以限制您正在加载的图标数量(为每种颜色加载一种类型),然后让矩阵存储为每个方块加载的图标类型。