Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: dixon en Junio 24, 2021, 06:28:11 AM

Título: 💎 Ajustar juego html5 en diferentes pantallas (Versión 2)
Publicado por: dixon en Junio 24, 2021, 06:28:11 AM
Nombre del autor : Reyes Dávila.
Breve descripción de su función : Ajusta el área del juego (canvas) proporcionalmente en navegadores webs. Eso significa que el juego se ajustará a cualquier pantalla, tanto de móviles, ordenadores, ipads, Xbox, TV, etc...
Versión GM utilizada : Para todos los Game makers que exporten a Html5.
Versión del script: 2 (El código original GML no era eficiente, ahora es un código JavaScript que se coloca en el archivo index).

Código JavaScript











<script>
var canvas = document.getElementById("canvas");

ajusteCanvas();
window.addEventListener('resize', ajusteCanvas);

function ajusteCanvas()
{
var ventanaAncho = window.innerWidth;
var ventanaAlto = window.innerHeight;
var ventanaOrientacion=screen.orientation.type.match(/\w+/)[0];
var porcentajeMaximo = 90;
var ventanaAnchoMaximo = porcentajeMaximo*ventanaAncho/100;
var ventanaAltoMaximo = porcentajeMaximo*ventanaAlto/100;
var canvasProporcion = canvas.clientWidth/canvas.clientHeight;
var canvasW = porcentajeMaximo*ventanaAncho/100;
var canvasH = canvasW/canvasProporcion;
console.log(`canvasW: ${canvasW}; canvasH: ${canvasH}; `)
while(canvasH>ventanaAltoMaximo)
{
porcentajeMaximo-=1;
canvasW = porcentajeMaximo*ventanaAncho/100;
canvasH = canvasW/canvasProporcion;
}

canvas.style.position="absolute";
canvas.style.width=`${canvasW}px`;
canvas.style.heigth=`${canvasH}px`;
var canvasX = (ventanaAncho-canvasW)/2;
canvas.style.left=`${canvasX}px`;
}
</script>














Modo de uso del código JavaScript:
1. Exporta tu juego html5.
2. Copia e código JavaScript que se está entregando.
3. Pégalo en el archivo índex sobre la etiqueta de cierre </body>.
(http://imgfz.com/i/ECoY7a0.jpeg)


4. Listo.




Lo siguiente está obsoleto:




Código del script GML (Versión 1 obsoleto):
ajuste_canvas_html5(width,height);




///ajuste_canvas_html5(width,height);
//Este script deberá ser llamado "ajuste_canvas_html5"
//Colocar en evento create: ajuste_canvas_html5("create");
//Colocar en evento step : ajuste_canvas_html5("step");

if(argument0="create")
{
    ///////////////////////////////////Datos a modificar
    Ancho00=room_width;
    Alto00=room_height;
    intervalo_ajuste=20;
    //////////////////////////Fin de datos a modificar

    ajuste_canvas_html5_step_time=0;
    proporcion_browser_previa=0;
    modulo="otro";
    if(string_length(string(self))>2){modulo="html5";alarm[0]=20};
}

if(argument0="step")
{
    ajuste_canvas_html5_step_time+=1;
    if(ajuste_canvas_html5_step_time=intervalo_ajuste)
    {
        ajuste_canvas_html5_step_time=0;
       
        proporcion00=Ancho00/Alto00;
        proporcion_browser00=browser_width/browser_height;

        if(modulo="html5")
        {
            if(proporcion_browser00!=proporcion_browser_previa)
            {
                anchox100=90*browser_width/100;
                altoy100=90*browser_height/100;
                altoy00=anchox100/proporcion00;

                while(altoy00>altoy100)
                {
                    anchox100-=1;
                    altoy00=anchox100/proporcion00;
                }

                window_set_size(anchox100,altoy00);
                window_set_position((browser_width-anchox100)/2,0);

            }//fin if(proporcion_browser00!=proporcion_browser_previa)

            proporcion_browser_previa=proporcion00;
        }
    }
}










Modo de uso

1. Crear un script llamado: ajuste_canvas_html5 con el código anterior.

2. En el evento create colocar:
ajuste_canvas_html5("create");

3. En el evento step colocar:
ajuste_canvas_html5("step");