refresh_scroll()

refresh_scroll(<número de scroll>)

Descripción:

Esta función se utiliza cuando se ha modificado un gráfico con las funciones map_put(), map_xput(), map_block_copy() o map_put_pixel() que está siendo utilizado como fondo de una región de scroll, para actualizarlo.

La función requiere como parámetro el <número de scroll> que se especificó al iniciar el scroll con la función start_scroll().

Cuando se modifica un gráfico que está siendo utilizado como fondo de un scroll no se actualiza en pantalla automáticamente, sino que hay que llamar a esta función para ello.

Una vez modificado el gráfico permanecerá así durante el resto de la ejecución del programa, a no ser que se descargue el gráfico de memoria (con unload_fpg(), unload_map() o unload_pcx()) y se vuelva a cargar, en cuyo caso se recuperará el estado original del gráfico.

Programa ejemplo:
PROGRAM ejemplo_refresh_scroll;

BEGIN
    load_fpg("help\help.fpg");
    start_scroll(0, 0, 103, 102, 0, 15);
    scroll.camera=id;
    write(0, 160, 192, 7, "Pulse [ENTER] para poner un gráfico en el scroll.");
    write(0, 160, 200, 7, "Pulse [ESPACIO] para actualizar scroll.");
    LOOP
        IF (scan_code==_enter)
           map_put(0, 103, 100, rand(16, 48), rand(16, 48));
        END
        IF (scan_code==_space)

            refresh_scroll(0); // Refrescamos el scroll 0.

        END
        x+=2;
        y+=1;
        FRAME;
    END
END


En el ejemplo se crea el scroll (número 0) como un scroll de dos planos: el primero con el gráfico número 103 y el plano de fondo con el gráfico número 102.

Dentro del bucle principal se imprimirá una bola sobre el gráfico 103 (primer plano del scroll) cuando se pulse la tecla ENTER. Pero éste no aparecerá en pantalla a no ser que se espere a que el scroll entre poco a poco en pantalla (con el gráfico 103 ya modificado), o bien se pulse la barra espaciadora, en cuyo caso la llamada a la función refresh_scroll() actualizará la ventana del scroll con el gráfico ya modificado.

Si en el ejemplo anterior se hubiera llamado a la función refresh_scroll() justo a continuación de map_put(), los gráficos impresos sobre el primer plano aparecerían instantáneamente al pulsar la barra espaciadora.

En el ejemplo, cada vez que se imprime una bola aparecen muchas; esto es debido a que el gráfico 103 utilizado como primer plano en el scroll es un gráfico pequeño y se muestra varias veces, en mosaico, para rellenar toda la zona de scroll.


Nota: Se puede observar que si el gráfico que se imprime está en unas coordenadas fuera de pantalla, no será necesario llamar a esta función ya que las partes del scroll que van entrando en pantalla se van refrescando automáticamente.


Ver: start_scroll() - move_scroll() - Estructura scroll