void roll_palette( uchar color_inicial, short número_colores, incremento)
Descripción:
Rota una gama de colores de la paleta. Esta función sirve para crear efectos de movimiento en gráficos estáticos, como el efecto del agua corriendo.
Para utilizar esta función se deben crear primero gráficos que utilicen una gama de colores consecutivos de la paleta original, en un ciclo perpetuo, por ejemplo, los colores del 0 al 15, pintando algo con los colores 0, 1, 2, 3, ... , 14, 15, 0, 1, 2, ...
Después, hay que tener cuidado de que dichos colores no sean utilizados por otros gráficos que vayan a aparecer en pantalla al mismo tiempo, si no se quiere también el efecto en ellos.
El incremento (tercer parámetro) suele ser 1 para realizar la rotación en un sentido y -1 para realizarla en el otro, pero se pueden utilizar otros valores para realizar el ciclo de colores a más velocidad.
Para realizar un ciclo de los colores del 0 al 15 se especificaría 0 como color inicial y 16 como número de colores.
MAIN_PROGRAM_CDIV BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); load_fpg("../help.fpg"); put_screen(1, 2); write(0, 160, 0, 1, "Pulse [ESPACIO] para rotar la paleta entera."); LOOP{ if( key(_space) ) roll_palette(0, 256, 1); // Se rotan los 256 colores. FRAME; } END_PROGRAM
En el ejemplo se pone como fondo una pantalla multicolor y dentro del bucle principal del programa se rotarán los 256 colores de la paleta cada vez que se pulse la barra espaciadora.
Si se quiere determinar la paleta con la que se debe realizar el ciclo de color, se debe cargar ésta de un archivo con la función load_pal().
Para realizar otros efectos de paleta, sin sustituir unos colores por otros en ciclos, se debe utilizar la función fade() que permite realizar múltiples fundidos y saturaciones de color a diferentes velocidades.
Existen dos versiones simplificadas de esta última función que permiten realizar un fundido a negro (fade_off()) y deshacerlo (fade_on()).
Ver: set_color() - load_pal() - fade() - fade_off() - fade_on()