Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
JavaScript canvas tilemap rendering

I try to render tilemap using canvas but it appears only when I resize the window. When I refresh the page I see only a black screen but when resize window tilemap was rendered.

Backend:

socket.emit('server:tileMap', { tilemap, tileTypes });

Frontend:

socket.on('server:tileMap', ({ tilemap, tileTypes}) => {
    drawTilemap(tilemap, tileTypes)
});

let tilemapData = {};

window.addEventListener('resize', () => {
    resizeCanvas();
    drawTilemap(tilemapData.tilemap, tilemapData.tileTypes);
   drawBuildingTilemap(tilemapData.buildingData);
});

const drawTilemap = (tilemap, tileTypes) => {
    tilemapData['tilemap'] = tilemap;
    tilemapData['tileTypes'] = tileTypes;
    resizeCanvas();
    let x = 0, y = 0;

    for (const row of tilemap) {
        for (const el of row) {
           for (const type of tileTypes) {
               if (type[0] === el) {
                  const mapCanvas = $('#map-ctx');
                  const ctx = mapCanvas.getContext('2d', { alpha: false });
                  const img = new Image();

                  img.src = `/sprites/${type[1]}.png`;
                  ctx.drawImage(img, x, y, 32, 32);
               }
           }
           x += 32;
        }
        x = 0;
        y += 32;
   }
}
const resizeCanvas = () => {
    const map = $('.my-city');
    allCanvases.forEach(canvas => {
       canvas.height = map.offsetHeight;
       canvas.width = map.offsetWidth;
    })

Pug file

canvas#map-ctx
canvas#building-ctx
canvas#marked-ctx
include ../components/chunkInfo.pug
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda