This function will perform the specified event, with the designated argument, for the instance running the code. There are many options here which allow complete simulation of all possible events, but note that this literally just performs all the code in the event and the game will not modify anything to make it trigger itself manually, for example if you choose to perform a keyboard press event, the event will be triggered but relevant key will not be recognised as having been pressed. Or if you perform an alarm event, the alarm counter will not be set to -1 but rather continue to count down.
The table below outlines all the constants that are included in GameMaker Studio 2 for referencing event types, as well as their number value. The events themselves are marked in bold text and are the same as the return values of the event_type variable, while their number values are marked with italic text and these are the same as the return values for the event_number variable:
| Name | Description |
|---|---|
| ev_create | Create event. |
| ev_destroy | Destroy event |
| ev_cleanup | Clean Up Event |
| ev_step | Step event |
| ---- ev_step_normal | Step |
| ---- ev_step_begin | Begin Step |
| ---- ev_step_end | End Step |
| ev_alarm | Alarm event |
| ---- 0 ... 11 | The number relevant to which of the 12 alarms you wish to trigger the event of |
| ev_keyboard, ev_keypress, ev_keyrelease | Keyboard/Keyboard Pressed/Keyboard Released |
| ---- any key code | vk_space or ord("W") for example. |
| ev_mouse | Mouse event |
| ---- ev_left_button | Left button held down on object |
| ---- ev_right_button | Right button held down on object |
| ---- ev_middle_button | Middle button (or clickable wheel) held down on object |
| ---- ev_no_button | No buttons held down |
| ---- ev_left_press | Left button just pressed on object |
| ---- ev_right_press | Right button just pressed on object |
| ---- ev_middle_press | Middle button (or clickable wheel) just pressed on object |
| ---- ev_left_release | Left button just released on object |
| ---- ev_right_release | Right button just released on object |
| ---- ev_middle_release | Middle button just released on object |
| ---- ev_mouse_enter | Mouse just entered object's bounding box |
| ---- ev_mouse_leave | Mouse just left object's bounding box |
| ---- ev_mouse_wheel_up | Mouse wheel scrolled upwards |
| ---- ev_mouse_wheel_down | Mouse wheel scrolled downwards |
| ---- ev_global_left_button | Left button held down anywhere |
| ---- ev_global_right_button | Right button held down anywhere |
| ---- ev_global_middle_button | Middle button (or clickable wheel) held down anywhere |
| ---- ev_global_left_press | Left button just pressed anywhere |
| ---- ev_global_right_press | Right button just pressed anywhere |
| ---- ev_global_middle_press | Middle button (or clickable wheel) just pressed anywhere |
| ---- ev_global_left_release | Left button just released anywhere |
| ---- ev_global_right_release | Right button just released anywhere |
| ---- ev_global_middle_release | Middle button just released anywhere |
| ev_gesture | A gesture event (Tap, Drag, Flick, Pinch or Rotate) |
| ---- ev_gesture_tap | A single click/touch and release has been detected for an instance |
| ---- ev_gesture_double_tap | Two quick touches/clicks and releases have been detected for an instance |
| ---- ev_gesture_drag_start | The beginning of a drag gesture has been detected for an instance |
| ---- ev_gesture_dragging | A touch/click has been held and moved for an instance |
| ---- ev_gesture_drag_end | The release of the touch/click from a drag has been detected for an instance |
| ---- ev_gesture_flick | The release of a touch/click from a drag had enough movement for a flick event to be detected for the instance |
| ---- ev_gesture_pinch_start | Two touches and a straight movement have been detected for an instance |
| ---- ev_gesture_pinch_in | The movement between two touches for an instance has been detected as inwards |
| ---- ev_gesture_pinch_out | The movement between two touches for an instance has been detected as outwards |
| ---- ev_gesture_pinch_end | The release of one (or both) touches for a pinch has been detected for an instance |
| ---- ev_gesture_rotate_start | The movement between two touches for an instance has been detected as a rotation |
| ---- ev_gesture_rotating | The movement between two touches for an instance has been detected as rotating |
| ---- ev_gesture_rotate_end | The release of one (or both) touches for a rotation has been detected for an instance |
| ---- ev_global_gesture_tap | A single click/touch and release has been detected anywhere in the room |
| ---- ev_global_gesture_double_tap | Two quick touches/clicks and releases have been detected anywhere in the room |
| ---- ev_global_gesture_drag_start | The beginning of a drag gesture has been detected anywhere in the room |
| ---- ev_global_gesture_dragging | A touch/click has been held and moved anywhere in the room |
| ---- ev_global_gesture_drag_end | The release of the touch/click from a drag has been detected anywhere in the room |
| ---- ev_global_gesture_flick | The release of a touch/click from a drag had enough movement for a flick event to be detected anywhere in the room |
| ---- ev_global_gesture_pinch_start | Two touches and a straight movement have been detected anywhere in the room |
| ---- ev_global_gesture_pinch_in | The movement between two touches anywhere in the room has been detected as inwards |
| ---- ev_global_gesture_pinch_out | The movement between two touches anywhere in the room has been detected as outwards |
| ---- ev_global_gesture_pinch_end | The release of one (or both) touches for a pinch has been detected anywhere in the room |
| ---- ev_global_gesture_rotate_start | The movement between two touches anywhere in the room has been detected as a rotation |
| ---- ev_global_gesture_rotating | The movement between two touches anywhere in the room has been detected as rotating |
| ---- ev_global_gesture_rotate_end | The release of one (or both) touches for a rotation has been detected anywhere in the room |
| ev_collision | Collision with an object |
| ---- The index of the object to check. | object1 for example. |
| ev_other | One of the actions listed under 'Other' |
| ---- ev_outside | Whether the instance is outside of the room |
| ---- ev_boundary | Whether the instance is intersecting the boundary |
| ---- ev_game_start | Only triggered at the start of the game |
| ---- ev_game_end | Only triggered at the end of the game |
| ---- ev_room_start | Only triggered at the start of a room |
| ---- ev_room_end | Only triggered at the end of a room |
| ---- ev_no_more_lives | If all lives are depleted (if lives==0) |
| ---- ev_no_more_health | If all health is depleted (if health==0) |
| ---- ev_animation_end | If the object's sprite has reached the end of its animation |
| ---- ev_end_of_path | If the object has reached the end of a path it is following |
| ---- ev_close_button | If the window's Close button has been pushed |
| ---- ev_user0... ev_user15 | One of the 16 available user events. |
| ev_draw | Draw event. NOTE: This event cannot be forced outside of a draw event and the constants and the constants are only for identifying the event when performed in these cases. |
| ---- ev_draw_begin | The draw begin event. |
| ---- ev_draw_end | The draw end event. |
| ---- ev_draw_pre | The pre draw event. |
| ---- ev_draw_post | The post draw event. |
| ---- ev_gui | The draw gui event. |
| ---- ev_gui_begin | The draw gui begin event. |
| ---- ev_gui_end | The draw gui end event. |
event_perform(type, numb);
| Argument | Description |
|---|---|
| type | The type of event to perform. See below. |
| numb | The specific event constant or value, if one is necessary (otherwise, just use 0). |
N/A
To help understand how this function can be use, please look at the following few examples:
event_perform(ev_keypress, ord("W"));
This would perform the event associated with Keyboard Check Pressed "W" key (without actually generating a keyboard press).
event_perform(ev_step, ev_step_begin);
This would perform the Begin Step event (if called from any of the step events it would cause the begin step event code to be run twice).
event_perform(ev_create, 0);
This would perform the Create event of the instance.