我正在尝试从数组到画布绘制一个tilemap。 但是,即使第一个图块也不会绘制,画布仍然是空的。
我想像下面那样在int []地图数组中获取子画面第一行中的第二个草砖位置3和第一个石地板砖位置5。
这是切片Spritesheet:
我想念什么?我猜我的src Rect和des Rect是错的...但是尝试了好几天却无法正常工作。无论我尝试了什么,以及如何更改srcR和desR Rect,画布都保持为空,什么也没画。
public class Tilemap {
private int rows;
private int cols;
private int tsize;
private Bitmap tilesheet;
private int tile;
private int[]map;
private Rect srcR;
private Rect desR;
public Tilemap(String tilesheetS,int rows,int cols) {
tilesheet = ImageHandler.getBmp(tilesheetS);
this.rows = rows;
this.cols = cols;
tsize = tilesheet.getWidth() / cols;
map = new int[]{
3,3,3,3,3,
3,5,5,3,3,
3,3,5,3,3,
3,3,5,5,3,
3,3,3,3,3
};
}
public int getTile(int col, int row) {
return map[row * 5 + col];
}
public void drawTilemap (Canvas canvas){
for(int c = 0; c < 5; c++){
for(int r = 0; r < 5;r++){
tile = getTile(c,r);
srcR = new Rect((tile-1)*tsize,0,tsize,tsize);
desR = new Rect(c*tsize,r*tsize,tsize,tsize);
System.out.println("tile: "+tile+"####"+"srcR: "+srcR+"####"+"desR: "+desR);
System.out.println("imagewidth: "+tilesheet.getWidth()+"####"+tilesheet.getHeight());
canvas.drawBitmap(
tilesheet, srcR, desR, null);
}
}
}
}
以及在我的GameView类中:
Tilemap gamemap = new Tilemap("tilemap",10,17);
当然,我也在代码中触发了drawTilemap(canvas)方法,这不是问题,因为当我尝试将整个tile精灵表绘制为一个时,它就像一种魅力一样工作……我很困惑。