gpt4 book ai didi

java - Android 方 block 游戏

转载 作者:行者123 更新时间:2023-12-01 15:42:11 25 4
gpt4 key购买 nike

我开发基于图 block 的游戏来绘制,我在每个帧中使用函数canvas.drawBitmap(),当我使用滚动(手势)时,函数drawBitmap使用了400多次,性能非常糟糕。

任何人都可以给我建议如何提高性能以制作流畅的动画。

public class DiamondIsometric implements Render{
private int MapWidth;
private int MapHeight;
private Bitmap _surface;
private Bitmap tempBitmap;
public DiamondIsometric(int MapWidth,int MapHeight,Bitmap _surface)
{
this.MapWidth=MapWidth;
this.MapHeight=MapHeight;
this._surface = _surface;
}
public MapObject[][] BuildMap()
{
int rx;
int ry;
MapObject[][] MapObjects = new MapObject[MapWidth][MapHeight];
for(int x=0;x<MapHeight;x++)
for(int y=0;y<MapWidth;y++)
{
rx=(x-y)*_surface.getWidth()/2;
ry=(x+y)*_surface.getHeight()/2;
MapObject temp = new MapObject(new Point(rx,ry),_surface);
MapObjects[x][y]=temp;
}
return MapObjects;
}

@Override
public void Render(Canvas canvas) {
}
@Override
public void Render(Canvas canvas,MapObject[][] MapObjects)
{
Paint temp = new Paint();
temp.setColor(Color.BLACK);
canvas.drawPaint(temp);
Bitmap toDraw = Bitmap.createBitmap(MapWidth*_surface.getWidth(), MapHeight*_surface.getHeight(), Config.RGB_565);
int bitmapOffsetX,bitmapOffsetY;
canvas.drawBitmap(this.Render2(canvas,MapObjects),0,0,null);

}
public Bitmap Render2(Canvas canvas, MapObject[][] MapObjects)
{
Paint temp = new Paint();
temp.setColor(Color.BLACK);
tempBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.RGB_565);
Canvas wideBMPCanvas = new Canvas(tempBitmap);
int bitmapOffsetX,bitmapOffsetY;
for(int i=0;i<MapObjects.length;i++)
for(int j=0;j<MapObjects[i].length;j++)
{
bitmapOffsetX=(IsometricView.globalAnchor.x % MapObjects[i][j]._bitmap.getWidth());
bitmapOffsetY=(IsometricView.globalAnchor.y % MapObjects[i][j]._bitmap.getHeight());
wideBMPCanvas.drawBitmap(MapObjects[i][j]._bitmap,MapObjects[i][j].coords.x-IsometricView.globalAnchor.x ,MapObjects[i][j].coords.y-IsometricView.globalAnchor.y , null);

}
return tempBitmap;
}

}

最佳答案

使用像 andEngine 这样的游戏引擎或libgdx 。他们使用 OpenGL 渲染,通常速度要快得多。

更新:如果您不想使用 OpenGL/游戏引擎,您应该尝试将图 block 组合成更大的位图。创建一个更大的位图并创建一个新 Canvas (new Canvas(largeBitmap)) 以将图 block 绘制到其上。绘制一个较大的比绘制多个较小的要快。对于我的游戏 K'UMPA我使用了类似的方法,但细节上更加复杂,因为屏幕上只能看到 map 的一小部分。

关于java - Android 方 block 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com