Home | Aanpassen | Blog | Extra's | Log In | Info
Handleiding | D&D iconen | GML Parser | Archief | Iso City
Gebruikersnaam: Wachtwoord:  
Over ons | Features | Directory | Banners | Contact

Het ontwerpen van spellen met Game Maker
Het ontwerpen van spellen met Game Maker

Oppervlakten tekenen

Deze functies zijn alleen beschikbaar in de geregistreerde versie van Game Maker!

In bepaalde situaties zou je niet direct op het scherm maar eerst op een canvas kunnen tekenen dat dan later kan worden gebruik om dingen op het scherm de tekenen. Een dergelijk canvas wordt een oppervlakte (surface) genoemd. Bijvoorbeeld, wil je de gebruiker op het scherm laten tekenen. Het moet dan niet meteen op het scherm verschijnen (omdat het elke volgende stap weer wordt gewist) , maar in plaats daarvan wil je het op een afzonderlijke oppervlakten tekenen die op het scherm in elke stap wordt gekopieerd. Of je wil een textuur gebruiken die steeds verandert.

De oppervlakten maken dit allen mogelijk. Zij zijn eigenlijk eerder eenvoudig te gebruiken. Je creëert eerst een oppervlakte. Daarna stel je in wat er met de verdere tekening op deze oppervlakte zou moeten gebeuren. Vanaf dat moment werkt de tekening functies uit op de oppervlakte. Zodra je dat gedaan hebt stel je het tekeningsdoel opnieuw in en de verdere tekening dat gebeurt op het scherm. Je kunt de oppervlakte tekenen op het scherm op vele verschillende manieren of het gebruiken als textuur. Er zijn een paar dingen waar je van bewust moet zijn. Zie aan het eind de opmerkingen.

De volgende functies bestaan om oppervlakten te tekenen

surface_create(w, h) Creëert een oppervlakte van de vermelde breedte en de hoogte. Geeft id van de oppervlakte terug, die in alle verdere functies moet worden gebruikt. Merk op dat de oppervlakte niet ontruimd zal worden. Dit is de verantwoordelijkheid van de gebruiker. (Plaats het als doel en roep de aangewezen functie op.)
surface_free(id) Bevrijd geheugen die wordt gebruikt voor de oppervlakte.
surface_exists(id) geeft terug of de oppervlakte met de ingestelde id bestaat.

surface_get_width(id) Geeft de breedte van de oppervlakte terug.
surface_get_height(id) Geeft de hoogte van de oppervlakte terug.
surface_get_texture(id) Geeft de textuur terug dat behoord bij de oppervlakte. Dit kan worden gebruikt om getextureerde objecten met het plaatje van de oppervlakte te tekenen.

surface_set_target(id) Plaatst de vermelde oppervlakte als tekendoel. Al het verdere tekenen gebeurt op deze oppervlakte. Het stelt de projectie terug om de oppervlakte eenvoudig te overschrijven.
surface_reset_target() Stelt het tekeningsdoel naar het normale scherm in.

surface_getpixel(id, x, y) Geeft de kleur terug op positie (x,y) in de oppervlakte. Dit is niet erg snel, dus gebruik het zorgvuldig.
surface_save(id, fname) Slaat een bmp plaatjes van de oppervlakte op met de gegeven bestandsnaam. Handig om screenshots te maken.
surface_save_part(id, fname, x, y, w, h) Slaat een deel van de oppervlakte op in een bestand.

draw_surface(id, x, y) Tekent de oppervlakte op positie (x,y). (Zonder kleur mengen en geen alpha transparantie.)
draw_surface_stretched(id, x, y, w, h) Tekent de oppervlakte uitgerekt over de hele ingestelde regio.
draw_surface_tiled(id, x, y) Tekent de oppervlakte betegelt zodat het de hele room bedekt.
draw_surface_part(id, left, top, width, height, x, y) Tekent een deel van de oppervlakte met zijn oorsprong op positie (x,y).
draw_surface_ext(id, x, y, xscale, yscale, rot, color, alpha) Tekent de oppervlakte met de gemengde kleur aangepast en geroteerd (gebruik c_white voor geen kleur menging) en alpha transparantie (0-1).
draw_surface_stretched_ext(id, x, y, w, h, color, alpha) Tekent de oppervlakte uitgerekt over de hele ingestelde regio. color is de mengkleur and alpha bepaald de transparantie instelling.
draw_surface_tiled_ext(id, x, y, xscale, yscale, color, alpha) Tekent de oppervlakte betegelt zodat het de hele room bedekt maar nu met aangepaste factoren en transparantie instelling.
draw_surface_part_ext(id, left, top, width, height, x, y, xscale, yscale, color, alpha) Tekent een deel van de oppervlakte met zijn oorsprong op positie (x,y) maar nu met aangepaste factoren en transparantie instelling.
draw_surface_general(id, left, top, width, height, x, y, xscale, yscale, rot, c1, c2, c3, c4, alpha) De meest algemene tekenfunctie. Het tekent het ingestelde deel van de oppervlakte met zijn oorsprong op positie (x,y) maar nu met aangepaste factoren, een draaihoek, een kleur voor elk van de vier hoeken (linksboven, rechtsboven, rechtsonder, en linksonder), en een alpha transparantie waarde.

surface_copy(destination, x, y, source) Kopieert de inhoud van de oppervlakte op positie (x,y) in de voorbestemde oppervlakte. (Zonder kleurmenging.)
surface_copy_part(destination, x, y, source, xs, ys, ws, hs) Kopieert het ingestelde gedeelte van de inhoud van de oppervlakte op positie (x,y) in de voorbestemde oppervlakte. (Zonder kleurmenging.)

Merk op dat er geen functies zijn om een deel van het scherm naar een oppervlakte te kopiëren. (Dit is onmogelijk toe te schrijven aan mogelijke formaatverschillen tussen het scherm en de oppervlakten.) Als dit wordt vereist moet je een oppervlakte plaatsen dat als doel wordt teruggeven en daarna de room tekenen. je kunt de oppervlakte het kopieer routines gebruiken om delen van de oppervlakte te krijgen.

Merk op dat je ook sprites en achtergronden van oppervlakten kunt maken. Zie de sectie over veranderen van resources voor meer informatie.

Dit moet wel voorzichtig gedaan worden. Merk deze dingen op:

  • Je zou het tekendoel nooit moeten veranderen terwijl je eigenlijk op het scherm tekent, gebruikt het nooit in draw events. Dit zal ernstige problemen met de projectie en viewport veroorzaken.
  • Oppervlakten werken niet goed in 3D modus. Je kan ze gebruiken als je niet in de 3D modus zit (door d3d_end() op te roepen voor ze te gebruiken, maar als je de 3D modus opnieuw start worden de oppervlakten vernietigt.
  • Om snelheidsredenen, zit de oppervlakte alleen in het videogeheugen. Als een resultaat, kan je de oppervlakte verliezen door bijv. verandering van scherm resolutie of waneer de screensaver start.
  • Oppervlakten worden niet opgeslagen als een spel wordt opgeslagen.

Zoeken Zoeken


Alternatieve versies Alternatieve versies

Je kan de handleiding ook lezen op een lange pagina (± 1.5 mb)

Ook beschikbaar in: Frans Duits

ZIP Download helpfile

Advertentie Advertentie

GameMaker Handleiding