我似乎无法弄清楚为什么我的代码不起作用。我基本上试图做的是使用数组生成基于10x10瓦片的地图。我不能在drawImage()的对象中使用对象吗?
这个想法是创建一个名为Box的对象,该对象具有'x'和'y'属性以及框内的图像对象。然后,2d数组中的每个位置都填充一个盒子对象。我想然后画出所有这些数组。每个tile(或数组元素)是一个64x64的盒子。
const ROW = 10;
const COLS = 11;
const SIZE = 64;
var canvas = document.getElementById("canvas");
var surface = canvas.getContext("2d");
//creating tile
function box() {
this.xaxis = 56;
this.yaxis = 0;
this.img = new Image();
this.img.src = "box_image.png";
}
//creating map
var map =[];
function setMap() {
for (var i = 0; i < ROW; i++) {
for (var o = 0; o < COLS; o++) {
map[i][o] = new box();
}
}
}
//rendering map
function render() {
for (var i = 0; i < map.length; i++) {
for (var x = 0; x < map.length; x++) {
var tile = map[i][x];
tile.xaxis *= i;
tile.yaxis *= x;
surface.drawImage(tile.img, tile.xaxis, tile.yaxis, 64, 64);
}
}
}
setTimeout(render, 10);
你应该从盒子分装后的图像可以随时调用。你只使用一个图像,但加载110次,这不是非常资源友好。 – Blindman67