1 回答
TA贡献1909条经验 获得超7个赞
您已经交换了源和目标。在image
第一个矩形区域(参数 2 -5)中定义窗口中的目标,第二个矩形区域(参数 6 - 9)定义图像 ( tileset
) 中的源矩形:
image(tileset, dx, dy, tilesize, tilesize, sx, sy, tilesize, tilesize);
由于目标网格 an 和源网格的tileset列数不同,因此函数drawTiles, 需要 2 列参数 ( d_cols, c_cols):
function draw() {
background(0);
drawTiles(map, 3, 2, 11);
}
function drawTiles(map, d_cols, s_cols, tilesize) {
for (let i = map.length - 1; i > -1; --i) {
let value = map[i];
// source x , y
let sx = (value % s_cols) * tilesize;
let sy = Math.floor(value / s_cols) * tilesize;
// distenation x , y
let dx = (i % d_cols) * tilesize;
let dy = Math.floor(i / d_cols) * tilesize;
// render image
image(tileset, dx, dy, tilesize, tilesize, sx, sy, tilesize, tilesize);
}
}
添加回答
举报