Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
api:event:zh [2023/10/12 17:53]
hfsr [函数]
api:event:zh [2023/11/29 12:36]
hfsr [概述]
Line 10: Line 10:
 - 让程序在作为前台程序执行时处理事件(优先模式)。 - 让程序在作为前台程序执行时处理事件(优先模式)。
  
-在驱动模式下,你需要在程序为事件注册回调(callback)函数(用 `event.listen()`函数),然后退出程序,以继续执行原先的程序(通常是shell)。 +在驱动模式下,你程序需要先为事件注册回调函数用 `event.listen()`函数,然后退出,以继续执行程序(通常是shell)。 ​  
-在优先模式下,你无需在程序中注册事件,可以直接使用`events.pull()`函数进行处理。+在优先模式下,你无需在程序中注册事件,可以直接使用`events.pull()`函数拉取并处理信号
  
-//注意://虽然从技术层面上讲可以同时使用两种工作模式,但不推荐这样做。为了保证所有已注册的函数都能接收到事件,事件的一次触发只有在所有函数被调用后才算结束。因此如果你处理函数(handler)进行了注册,又行了拉取(pull)操作,那么同一个事件会被响应两次。+**注意:**虽然从技术层面上讲可以同时使用两种工作模式,但不推荐这样做。为了保证所有已注册的函数都能接收到事件,事件只有在所有函数被调用后才会被消耗掉。因此如果你注册了处理函数,同时行了拉取,那么同一个事件会被响应两次。
 ===== 函数 ===== ===== 函数 =====
  
Line 115: Line 115:
  
 ===== 通用事件处理函数 ===== ===== 通用事件处理函数 =====
-此处提供了一个较好的通用事件处理函数。此样例的主要功能是以`event.pull()`函数返回的事件ID作为回调函数列表的键,用元方法来处理未定义事件。请注意`event.pull`函数会让程序进入等待状态,直到出现可用事件。+此处提供了一个较好的通用事件处理函数。此样例以`event.pull()`函数返回的事件ID作为回调函数列表的键,用元方法来处理未定义事件。请注意`event.pull`函数会让程序进入等待状态,直到出现可用事件。
  
 ```lua ```lua
Line 128: Line 128:
  
 --存储所有事件处理函数的列表 --存储所有事件处理函数的列表
---会返回占位函数unknownEvent,以防无法匹配+--会返回占位函数unknownEvent,以防无法匹配
 local myEventHandlers = setmetatable({},​ { __index = function() return unknownEvent end }) local myEventHandlers = setmetatable({},​ { __index = function() return unknownEvent end })
  
Line 152: Line 152:
  
  
-如果程序以驱动模式运作,你需要注册事件作为替代。可以将所有事件注册到像上面样例一样的全局事件处理函数,也可以将每个事件注册到对应的处理函数。如果你希望上面的样例在后台运行,`while running do`循环需要替换为类似下面的代码:+如果程序以驱动模式运作,你需要注册事件而不是拉取事件可以将所有事件注册到像上面样例一样的全局事件处理函数,也可以将每个事件注册到对应的处理函数。如果你希望上面的样例在后台运行,`while running do`循环需要替换为类似下面的代码:
  
 ```lua ```lua
 event.listen("​key_up",​ handleEvent) --注册handleEvent函数,使其在key_up事件发生时被调用,然后结束程序 event.listen("​key_up",​ handleEvent) --注册handleEvent函数,使其在key_up事件发生时被调用,然后结束程序
 ``` ```
-也可以直接注册`myEventHandlers.key_up`,这样的话会额外收到一个参数(事件名称)作为第一个参数。+也可以直接注册`myEventHandlers.key_up`,这样的话处理函数(`key_up`函数)会额外收到一个参数(事件名称)作为第一个参数。
  
 目录 目录
 ----------- -----------
 {{page>​api:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}} {{page>​api:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}}