私のコードがなぜ機能しないのか分かりません。私が本質的にしようとしているのは、配列を使って10x10のタイルベースのマップを生成することです。オブジェクト内のオブジェクトをdrawImage()に使用できませんか?
「x」と「y」軸プロパティとボックス内にイメージオブジェクトを持つBoxというオブジェクトを作成することです。次に、2次元配列の各位置にボックスオブジェクトが設定されます。
これらの配列をすべてキャンバスに描画します。各タイル(または配列要素)は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);
を定義した後、あなたはボックスとは別に画像をロードする必要があり、いつでも呼び出すことができます。 1つのイメージしか使用していませんが、110回ロードするとリソースにはあまり適していません。 – Blindman67