local event = require "event" --加载事件列表,将指向它们的指针存储到event变量中 local char_space = string.byte(" ") --用数字代替空格字符 local running = true --存储状态的变量,便于循环停止执行 function unknownEvent() --如果事件为无关事件,则不进行处理 end --存储所有事件处理函数的列表 --会返回占位伪函数unknownEvent,以防无法匹配 local myEventHandlers = setmetatable({}, { __index = function() return unknownEvent end }) --简易按键处理函数样例,当用户按下空格键时将running变量设为false function myEventHandlers.key_up(adress, char, code, playerName) if (char == char_space) then running = false end end --主事件处理函数,将事件ID(eventID)从其他参数中分离出来 function handleEvent(eventID, ...) if (eventID) then --如果一段时间内没有事件被拉取,值可能为nil myEventHandlers[eventID](...) --调用对应的事件处理函数,并传递剩下的所有参数 end end --主事件拉取循环,处理所有事件。在没有任务时会等待。 while running do handleEvent(event.pull()) --等待可用事件出现,然后进行处理 end