Het ontwerpen van spellen met Game Maker
Gebeurtenissen aanmaken
Zoals je weet, wordt Game Maker geheel door gebeurtenissen (events) aangestuurd. Alle acties gebeurden als resultaat van gebeurtenissen. Er zijn een aantal verschillende gebeurtenissen. Aanmaak en verwijder gebeurtenissen gebeuren als een instantie is gemaakt of verwijderd. In elke stap, behandeld het systeem eerst de alarm gebeurtenissen. Daarna de toetsenbord en muis gebeurtenissen en daarna de step-gebeurtenis. Nu worden de botsing-gebeurtenissen bekeken, waarna de instanties op hun nieuwe positie staan. Ten slotte wordt de draw-gebeurtenis gebruikt om de instanties te tekenen (merk op dat als er meerder views zijn de draw-gebeurtenis meerdere keren per stap wordt uitgevoerd). Je kunt ook een gebeurtenis laten uitvoeren met behulp van een stuk code. De volgende functies bestaan:
event_perform(type, numb) Voert gebeurtenis numb van het aangegeven type van de actuele instantie uit. De volgende gebeurtenis soorten zijn aangemerkt:
ev_createAls er meerdere gebeurtenissen van het gegeven type zijn, kan numb worden gebruikt om de precieze gebeurtenis aan te geven. Voor de alarm gebeurtenissen is dit 0 tot 11. Voor de toetsenbord gebeurtenissen kun je de toetscode van de toets gebruiken. Voor muis (en joystick) gebeurtenissen kun je de volgende constanten gebruiken:
ev_destroy
ev_step
ev_alarm
ev_keyboard
ev_mouse
ev_collision
ev_other
ev_draw
ev_keypress
ev_keyrelease
ev_left_buttonVoor de botsing gebeurtenissen geef je de index van het andere object. Ten slotte, voor de andere gebeurtenis kunnen de volgende constanten worden gebruikt:
ev_right_button
ev_middle_button
ev_no_button
ev_left_press
ev_right_press
ev_middle_press
ev_left_release
ev_right_release
ev_middle_release
ev_mouse_enter
ev_mouse_leave
ev_mouse_wheel_up
ev_mouse_wheel_down
ev_global_left_button
ev_global_right_button
ev_global_middle_button
ev_global_left_press
ev_global_right_press
ev_global_middle_press
ev_global_left_release
ev_global_right_release
ev_global_middle_release
ev_joystick1_left
ev_joystick1_right
ev_joystick1_up
ev_joystick1_down
ev_joystick1_button1
ev_joystick1_button2
ev_joystick1_button3
ev_joystick1_button4
ev_joystick1_button5
ev_joystick1_button6
ev_joystick1_button7
ev_joystick1_button8
ev_joystick2_left
ev_joystick2_right
ev_joystick2_up
ev_joystick2_down
ev_joystick2_button1
ev_joystick2_button2
ev_joystick2_button3
ev_joystick2_button4
ev_joystick2_button5
ev_joystick2_button6
ev_joystick2_button7
ev_joystick2_button8
ev_outsideVoor de step-gebeurtenis bestaat de index uit een van de volgende constanten:
ev_boundary
ev_game_start
ev_game_end
ev_room_start
ev_room_end
ev_no_more_lives
ev_no_more_health
ev_animation_end
ev_end_of_path
ev_user0
ev_user1
ev_user2
ev_user3
ev_user4
ev_user5
ev_user6
ev_user7
ev_user8
ev_user9
ev_user10
ev_user11
ev_user12
ev_user13
ev_user14
ev_user15
ev_step_normalevent_perform_object(obj, type, numb) Deze functie werkt het zelfde als de functie hierboven behalve dat je deze keer gebeurtenissen kunt aangeven in andere objecten. Merk op dat de acties in deze gebeurtenissen worden uitgevoerd voor de huidige instantie, niet voor de instanties van het opgegeven object.
ev_step_begin
ev_step_end
event_user(numb) In de other-gebeurtenissen kun je ook 16 door de gebruiker gedefinieerde gebeurtenissen gebruiken. Deze worden alleen uitgevoerd als je ze oproept in met deze functie. numb moet tussen de 0 en 15 liggen.
event_inherited() Voert de geërfde gebeurtenis uit. Dit werkt alleen als de instantie een ouder (parent) object heeft.
Je kunt informatie krijgen over de actuele gebeurtenis die wordt uitgevoerd met behulp van de volgend alleen-lezen variabelen:
event_type* Type gebeurtenis die wordt uitgevoerd.
event_number* Nummer van de actuele gebeurtenis die wordt uitgevoerd.
event_object* De object index waarvan de actuele gebeurtenis wordt uitgevoerd.
event_action* De index van de actie die momenteel wordt uitgevoerd (0 is de eerste in de gebeurtenis, enz.).