« 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.