Я пытаюсь нарисовать карту тайла из массива на холст.Но даже первая плитка не будет нарисована, холст останется пустым.
Я хотел получить вторую позицию плитки травы 3 и первую позицию плитки 5 каменного пола в первом ряду таблицы спрайтов, как показано ниже в моем int[] массив карт.
это спрайт листов:
![Tile Spritesheet](https://i.stack.imgur.com/0Eqgu.png)
Чего мне не хватает?Я думаю, что мои 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) в моем коде, это не проблема, потому что когда я пытаюсь нарисоватьвесь спрайт лист плитки, как один, он работает как шарм ... Я в замешательстве.