Me gustaría saber cómo hacer para dividir en páginas los valores de una lista.
Creo una variable aparte y la llamo var
si la var = 1 ( Selección de los 4 primeras valores de la lista, o sea, de la 1 a la 4 )
si la var = 2 ( Selección de los siguientes 4 valores de la lista, o sea, de la 5 a la 8 )
etc...
Lo que pretendo hacer es que por cada 4 valores que tenga la lista, se sitúen en una página distinta, la página 1 tiene 4 valores , la página 2 las otras 4 valores que le siguen a la lista, etc...
El nombre de la variable debe ser algo diferente a var, ya que var se usa para declarar variables temporales, mejor usa algo simple como
[gml]
pagina = 1;
[/gml]
Calcula el número de paginas
[gml]
numitems = ds_list_size(list);
numpags = ceil(numitems * 4);
[/gml]
Si los valores son texto, puedes dibujarlos de esta forma
[gml]
// Dibujar 4 items
index = (pagina - 1) * 4;
yy = y; //posición inicial
repeat(4)
{
draw_text(x,yy, lista[|index]);
index ++; //pasar al sig item
yy += 15; //dibujar más abajo
//si ya no hay más items, terminar ciclo
if (index >= numitems) break;
}
[/gml]
Recuerda que en las listas los elementos se numeran desde el cero.
Edit: Corregí un error, para calcular index se necesita una multiplicación y había puesto una división.
Para cambiar de página puedes usar algo como esto
[gml]
// Ir a la pagina anterior
if keyboard_check_pressed(vk_left)
{
if (pagina > 1) pagina --; //pagina anterior
else pagina = numpags; //ultima pagina
}
// Ir a la pagina siguiente
if keyboard_check_pressed(vk_right)
{
if (pagina < numpags) pagina ++; //pagina siguiente
else pagina = 1; //primera pagina
}
[/gml]
¡Muchas gracias!
He corregido el código de cambiar la página porque habías puesto lo de la última página al presionar izquierda y lo de primera página en la derecha
///Para cambiar de página
// Ir a la página anterior
if keyboard_check_pressed(vk_left)
{
if (pagina > 1) pagina --; //página anterior
else pagina = 1; //primera página
}
// Ir a la página siguiente
if keyboard_check_pressed(vk_right)
{
if (pagina < numpags) pagina ++; //página siguiente
}
Y luego modifiqué lo del número de páginas, en lugar de multiplicar lo cambié por una división
///Calcula el número de páginas
numitems = ds_list_size(listmail);
numpags = ceil(numitems / 4);