« Előző oldal- - - ^Tartalom^- - - Következő oldal »



A KÉPERNYŐ ÚJRARAJZOLÁSA:

Normális esetben a pálya minden egyes lépés során újrarajzolódik a képernyőn, de néha szükség van máskor is az újrarajzolásra, pl. ha kiíródik egy üzenet és várni kell, hogy a felhasználó leüssön egy billentyűt a folytatáshoz.

screen_redraw() - a pálya újrarajzolása az összes rajzolási esemény hívásával.
screen_refresh() - a képernyő frissítése az aktuális pálya képe által.

A második függvény megértéséhez a rajzolás mikéntjét kell egy kicsit jobban megérteni.
Van belsőleg egy kép, melyen az összes rajzolás megtörténik. Ez a kép nem látható a képernyőn. Csak egy-egy lépés végén cserélődik fel a képernyőn látható kép ezzel a belső képpel, mikor az összes rajz elhelyeződött (ezt nevezik kettős bufferelésnek). Az első függvény újrarajzolja a belső képet és aztán frissíti a képernyőn láthatót. A második függvény csak a képernyőn látható képet frissíti.
Most arról, hogy miért nem használhattuk a rajzolási cselekvéseket a rajzolási eseményen (Add Event/Draw) kívül. Ezek rajzolnak a belső képre, de a rajzok nem lesznek láthatók a képernyőn. Mikor a rajzolás befejeződött, először a pálya háttere jelenik meg és törlődik minden, ami a belső képen van. De ha a screen_refresh() -t használjuk a rajzolás után, akkor a frissített kép válik láthatóvá a képernyőn.

Tehát pl. az, hogy kiíratunk egy szöveget, frissítjük a képernyőt és várakozunk gombnyomásra, így néz ki:

{
draw_text(screen_width/2,100,'Nyomj le egy gombot a folytatáshoz.');
screen_refresh();
keyboard_wait();
}

A következő két függvény a GM 6-os változatától használható:
Amikor magunk rajzoljuk a pályát, hasznos, hogy NE engedjünk az automatikus rajzolást. Például lehet, hogy a pálya kirajzolására csak minden ötödik lépésben van szükségünk. Ehhez a következő függvény használható:
set_automatic_draw(ertek) - automatikusan újrarajzolódjon-e a pálya (true - igaz -, alapértelmezett), vagy sem (false).
Végül van egy függvény annak beállítására, hogy összhangban legyen-e a rajzolás a monitor képfrissítési frekvenciájával:
set_synchronization(ertek) - jelzi, hogy összhangban legyen-e a rajzolás a monitor képfrissítési frekvenciájával.
GM 7-től kikényszeríthető a várakozás a következő függőleges szinkronizációra a következő függvénnyel:
screen_wait_vsync() - várakozás a monitor következő függőleges szinkronizációjára.