从Spritesheet绘制一张tilemap:什么也没画

时间:2018-10-18 15:06:50

标签: java android canvas

我正在尝试从数组到画布绘制一个tilemap。 但是,即使第一个图块也不会绘制,画布仍然是空的。

我想像下面那样在int []地图数组中获取子画面第一行中的第二个草砖位置3和第一个石地板砖位置5。

这是切片Spritesheet:

Tile 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精灵表绘制为一个时,它就像一种魅力一样工作……我很困惑。

0 个答案:

没有答案