event_perform

执行调用实例的给定事件。

语法:

event_perform(type, numb);


参数 描述
type 要执行的事件类型。如下所示:
numb 在必要时指定具体事件的常量或值(否则用0即可)。


返回: N/A(无返回值)


描述

对于运行代码的实例,此函数将使用指定的参数执行指定的事件。这里有很多选项可以完全模拟所有可能的事件,但请注意,这只是执行事件中的所有代码,游戏不会修改任何东西以使其手动触发,例如,如果你选择执行键盘按下事件(keyboard press event),将触发事件,但相关键不会被识别为已被按下。或者,如果执行计时器事件(alarm event),计时器计数器将不会设置为 -1,而是继续倒计时。

常量

下表概述了 GameMaker Studio 2 中包含的用于引用事件类型的所有常量,以及它们的数值。事件本身以 粗体文本 标记,并且与 event_type 变量的返回值相同,而它们的数值标记为 斜体文本,这些与 event_number 变量的返回值相同:

名称 描述
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 你希望触发的 12 个计时器中的哪一个的相关编号
ev_keyboard, ev_keypress, ev_keyrelease 键盘(Keyboard)/ 键盘按下(Keyboard Pressed)/ 键盘放开事件(Keyboard Released)
   ---- 任意一个键码 vk_space 或形如 ord("W")。
ev_mouse 鼠标事件(Mouse event)
   ---- ev_left_button 左键在物体上按住
   ---- 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_gesture 手势事件(轻敲、拖动、划动、捏合或旋转)
   ---- ev_gesture_tap 已检测到 实例 的单击 / 触摸和释放
   ---- ev_gesture_double_tap 已检测到 实例 的两次快速触摸 / 单击和释放
   ---- ev_gesture_drag_start 已为 实例 检测到拖拽手势的开始
   ---- ev_gesture_dragging 触摸 / 单击已保持并移动 实例
   ---- ev_gesture_drag_end 已检测到 实例 从拖拽中释放触摸 / 单击
   ---- ev_gesture_flick 从拖拽中释放触摸 / 单击有足够的移动,可以检测 实例 的轻抚事件
   ---- ev_gesture_pinch_start 已经为 实例 检测到两次触摸和直线运动
   ---- ev_gesture_pinch_in 已经检测到 实例 的两次触摸之间的移动
   ---- ev_gesture_pinch_out 实例 的两次触摸之间的移动已被检测为向外
   ---- ev_gesture_pinch_end 已经针对 实例 检测到针对捏合的一个(或两个)触摸的释放
   ---- ev_gesture_rotate_start 已经将 实例 的两次触摸之间的移动检测为旋转
   ---- ev_gesture_rotating 实例 的两次触摸之间的移动被检测为旋转
   ---- ev_gesture_rotate_end 已针对 实例 检测到旋转的一个(或两个)触摸的释放
   ---- ev_global_gesture_tap 在房间内 任何地方 检测到单击 / 触摸和释放
   ---- ev_global_gesture_double_tap 在房间里 任何地方 检测到两次快速触摸 / 点击和释放
   ---- ev_global_gesture_drag_start 已经在房间中 任何地方 检测到拖拽手势的开始
   ---- ev_global_gesture_dragging 保持触摸 / 点击并在房间内 移动
   ---- ev_global_gesture_drag_end 在房间中已经检测到 任何位置 从拖拽中释放触摸 / 点击
   ---- ev_global_gesture_flick 从拖动中释放触摸 / 点击有足够的移动,可以在房间的任何地方 检测到轻弹事件
   ---- ev_global_gesture_pinch_start 在房间里的 任何地方 都检测到两次触摸和直线移动
   ---- ev_global_gesture_pinch_in 房间内 任何地方 两个触摸之间的移动已被检测为向内
   ---- ev_global_gesture_pinch_out 房间内 任何地方 两个触摸之间的移动已被检测为向外
   ---- ev_global_gesture_pinch_end 在房间里 任何地方 检测到一次(或两次)触发释放
   ---- ev_global_gesture_rotate_start 房间中 任何地方 两个触摸之间的移动被检测为旋转开始
   ---- ev_global_gesture_rotating 房间中 任何地方 两个触摸之间的移动被检测为旋转
   ---- ev_global_gesture_rotate_end 房间中 任何地方 两个触摸之间的移动被检测为旋转结束
ev_collision 与物体碰撞
   ---- The index of the object to check. 例如 object1
ev_other “其他” 下列出的一项行动
   ---- ev_outside 实例是否在房间外面
   ---- ev_boundary 实例是否与边界相交
   ---- ev_game_start 仅在游戏开始时触发
   ---- ev_game_end 仅在游戏结束时触发
   ---- ev_room_start 仅在房间开始时触发
   ---- ev_room_end 仅在房间结束时触发
   ---- ev_no_more_lives 如果所有生命都耗尽了(如果 lives==0)
   ---- ev_no_more_health 如果所有健康都耗尽了(如果 health==0)
   ---- ev_animation_end 如果物体的精灵已到达其动画的结尾
   ---- ev_end_of_path 如果物体已到达跟随路径的末尾
   ---- ev_close_button 如果已按下窗口的 “关闭” 按钮
   ---- ev_user0... ev_user15 16 个可用用户事件之一。
ev_draw 绘制事件。 注意: 此事件不能强制在绘制事件之外,常量仅用于在这些情况下执行时识别事件。
   ---- 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 绘制 GUI 事件(The draw gui event)
   ---- ev_gui_begin 绘制 GUI 开始事件(The draw gui begin event)
   ---- ev_gui_end 绘制 GUI 结束事件(The draw gui end event)


扩展示例

为了便于理解该函数的用法,请看下面几个样例:

event_perform(ev_keypress, ord("W"));

这将执行与键盘检查按下 “W” 键相关联的事件(不实际生成键盘按压)。

event_perform(ev_step, ev_step_begin);

这将执行 步开始(Begin Step) 事件(如果从任何步事件调用它将导致步开始事件代码运行两次)。

event_perform(ev_create, 0);

这将执行实例的 创建(Create) 事件。


上一页:事件发生
下一页:event_perform_object
© Copyright YoYo Games Ltd. 2018 All Rights Reserved