lo farei ..
- capire quante piastrelle di larghezza e questa immagine è
- disegnare l'immagine di una tela in memoria e utilizzare il contesto per ottenere i dati dell'immagine.
- Loop-through e sottoimmagine di ogni riquadro, memorizzato in una matrice.
Assumendo:
imageWidth, imageHeight, tileWidth, tileHeight
Tutti descrivono quali sono i loro nomi suggeriscono, e:
EDIT: Aggiunto carico immagine come da commento, fissato a torto nome ImageWidth
e ImageHeight
a imageWidth
e imageHeight
MODIFICA: Esecuzione del codice all'interno imageObj.onload
come l'immagine viene disegnata qui, drawImage() di origine (0,0)
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var imageObj = new Image();
imageObj.src = "tilesetImageLocationHere";
imageObj.onload = function() {
ctx.drawImage(imageObj, 0, 0);
Poi, dividere l'immagine in un elenco di dati di piastrelle ..
var tilesX = imageWidth/tileWidth;
var tilesY = imageHeight/tileHeight;
var totalTiles = tilesX * tilesY;
var tileData = new Array();
for(var i=0; i<tilesY; i++)
{
for(var j=0; j<tilesX; j++)
{
// Store the image data of each tile in the array.
tileData.push(ctx.getImageData(j*tileWidth, i*tileHeight, tileWidth, tileHeight));
}
}
//From here you should be able to draw your images back into a canvas like so:
ctx.putImageData(tileData[0], x, y);
}
Devi sapere quanti pixel di larghezza e altezza ogni quadrato è – jeschafe
32x32 ...? Una tessera base. – nn2
Pixel.,32 pixel – nn2