Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Scrollbars [Resuelto desde antes de nacer]  (Leído 393 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jhgv

  • Habitual
  • *
  • Puntos: 63
  • Mensajes: 30
  • Sexo: Masculino
    • Ver Perfil
en: Septiembre 01, 2019, 08:12:13 am
Hola a todos, hace tiempos vi en reddit algo sobre las scrollbars pero siento que algo se me escapa ademas busque aqui y salia algo táctil el caso es que quiero hacer una scrollbar para los menus y si por ejemplo el menu fuera del tamaño total de la room no habría problema pero ¿como hago para que se desplaze en un pequeño cuadrado? ya saben de esas scrollbars qué aparecen en pequeños menus de pausa (no ocupan toda la pantalla) y también ¿como hago para que el contenido no se salga del cuadro? (parecido a las mascaras de recorte en Photoshop ¡Ayuda! Plos :c
« última modificación: Septiembre 01, 2019, 09:49:58 am por jhgv »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Goganpis

Respuesta #1 en: Septiembre 01, 2019, 09:14:32 am
Usa una surface del tamaño del cuadro y dibuja lo que necesitas alli y para el scrollbar solo usa un array donde guardes cada opcion del cuadro y lo vas dibujando mediante el limite que tenga el scroll ej:

Código: [Seleccionar]
scroll = 0;
option[0] = "blabla";
option[1] = "otra opcion";
option[2] = "bla";
option[4] = "otro bla";
option[5] = "bla";

var wheel;
wheel = mouse_wheel_up()-mouse_wheel_down();

scroll += wheel;
if scroll > 3
    {
     scroll = 3;
    }
else
    {
     scroll = 0;
    }

surface_set_target(scroll_surf);
draw_clear_alpha(0,0);

var i,l;
l = scroll+3
for(i=scroll;i<l;i+=1)
    {
     if i > 5 then break;
     
     draw_text(0,i*20,option[i]);
    }

surface_reset_target();
draw_surface(scroll_surf, room_width/2, room_height/2);

pd: scroll_surf tiene que ser creada anteriormente.
pd2: usalo en el evento Draw
pd3: Se mueve con la rueda del raton ya para el scrollbar usa una imagen que cambie la variable scroll.

 


Desconectado jhgv

  • Habitual
  • *
  • Puntos: 63
  • Mensajes: 30
  • Sexo: Masculino
    • Ver Perfil
Respuesta #2 en: Septiembre 01, 2019, 09:20:42 am
Usa una surface del tamaño del cuadro y dibuja lo que necesitas alli y para el scrollbar solo usa un array donde guardes cada opcion del cuadro y lo vas dibujando mediante el limite que tenga el scroll ej:

Código: [Seleccionar]
scroll = 0;
option[0] = "blabla";
option[1] = "otra opcion";
option[2] = "bla";
option[4] = "otro bla";
option[5] = "bla";

var wheel;
wheel = mouse_wheel_up()-mouse_wheel_down();

scroll += wheel;
if scroll > 3
    {
     scroll = 3;
    }
else
    {
     scroll = 0;
    }

surface_set_target(scroll_surf);
draw_clear_alpha(0,0);

var i,l;
l = scroll+3
for(i=scroll;i<l;i+=1)
    {
     if i > 5 then break;
     
     draw_text(0,i*20,option[i]);
    }

surface_reset_target();
draw_surface(scroll_surf, room_width/2, room_height/2);

pd: scroll_surf tiene que ser creada anteriormente.
pd2: usalo en el evento Draw
pd3: Se mueve con la rueda del raton ya para el scrollbar usa una imagen que cambie la variable scroll.
Muchisimas gracias por ayudarme bro el problema es que ando algo flojo (oxidado) en esto y la verdad no entiendo el codigo de los demás... podrias decirme como funcionan? para tomarlo de referencia osea dame el codigo pero con palabras :c ploss...
psd: lo Siento muchisimo peroo... ¿que es surface?

 


Desconectado Goganpis

Respuesta #3 en: Septiembre 01, 2019, 09:37:33 am
OK te explico, aparte el codigo de antes lo modifique es que tenia varios bugs   :-[

Código: [Seleccionar]
scroll = 0; // Es la posicion del scroll o la bajada como entiendas lo que hace la scrollbar
option[0] = "blabla"; // Son las opciones imaginando que es un menu de opciones
option[1] = "otra opcion";
option[2] = "bla";
option[4] = "otro bla";
option[5] = "bla";

var wheel; // Esto solo es un controlador para mover el scroll eso puedes modificarlo
wheel = mouse_wheel_up()-mouse_wheel_down();

scroll += wheel; // Se suma la var wheel definida antes
if scroll > 3 // Esto es para que el scroll no salga del limite de opciones o se ira a un infinito loco donde no hay nada
    { // Aunque en este caso el array tiraria error al hacerlo
     scroll = 3;
    }
else if scroll < 0
    {
     scroll = 0;
    }

surface_set_target(scroll_surf); // Seleccionar surface
draw_clear_alpha(0,0); // Borrar dibujado para que entiendas se limpia la surface, pantalla como entiendas

var i,l;
l = scroll+3; // Solo es una variable para detener el bucle
for(i=scroll;i<l;i+=1)
    {
     // (i-scroll) = para que se dibuje en la surface(nueva pantalla) simulando el scroll y no en la posicion que sale del cuadro
     draw_text(0,(i-scroll)*20,option[i]); // Dibujara un texto esto no tiene ciencia
    }

surface_reset_target(); // Reinicia la surface (En si esto suelta la surface y no sufre ningun otro caso caotico
draw_surface(scroll_surf, room_width/2, room_height/2); // Se dibuja en la coordenada deseada

Muchisimas gracias por ayudarme bro el problema es que ando algo flojo (oxidado) en esto y la verdad no entiendo el codigo de los demás... podrias decirme como funcionan? para tomarlo de referencia osea dame el codigo pero con palabras :c ploss...
psd: lo Siento muchisimo peroo... ¿que es surface?