BlitzMax/模块/事件/事件队列
事件队列是一个简单的先进先出队列,用于收集由应用程序发出的 TEvent 对象。
PollEvent 和 WaitEvent 命令可以用于接收事件队列中的下一个事件,而 PeekEvent 命令可以用于检查事件队列是否为空。
使用 PostEvent 将事件添加到事件队列。
Global CurrentEvent:TEvent=NullEvent
描述:当前事件
信息:CurrentEvent 全局变量包含由 PollEvent 或 WaitEvent 最近返回的事件。
Function PeekEvent:TEvent()
描述:检查事件队列中的下一个事件
信息:PeekEvent 检查事件队列中的下一个事件,不会从事件队列中删除它或修改 CurrentEvent 全局变量。
如果事件队列中没有事件,PeekEvent 返回 Null。
Function PollEvent()
描述:从事件队列中获取下一个事件
返回值:事件队列中下一个事件的 ID,如果事件队列为空,则返回 0
信息:PollEvent 从事件队列中删除一个事件并更新 CurrentEvent 全局变量。
如果事件队列中没有事件,PollEvent 返回 0。
Function WaitEvent()
描述:从事件队列中获取下一个事件,如果需要则等待
返回值:事件队列中下一个事件的 ID
信息:WaitEvent 从事件队列中删除一个事件并更新 CurrentEvent 全局变量。
如果事件队列中没有事件,WaitEvent 会暂停程序执行,直到有事件可用。
Function PostEvent( event:TEvent,update=False )
描述:将事件发布到事件队列
信息:PostEvent 将事件添加到事件队列的末尾。
update 标志可以用于更新现有事件。如果 update 为 True 并且在事件队列中找到了具有相同 id 和 source 的事件,则将更新现有事件,而不是将 event 添加到事件队列。这对于防止诸如计时器事件之类的高频率事件淹没事件队列非常有用。
Function EventID()
描述:获取当前事件 ID
返回值:CurrentEvent 全局变量的 id 字段
Function EventData()
描述:获取当前事件数据
返回值:CurrentEvent 全局变量的 data 字段
Function EventMods()
描述:获取当前事件修饰符
返回值:CurrentEvent 全局变量的 mods 字段
Function EventX()
描述:获取当前事件 x 值
返回值:CurrentEvent 全局变量的 x 字段
Function EventY()
描述:获取当前事件 y 值
返回值:CurrentEvent 全局变量的 y 字段
Function EventExtra:Object()
描述:获取当前事件额外值
返回值:CurrentEvent 全局变量的 extra 字段
Function EventText$()
描述:获取当前事件额外值,并转换为字符串
返回值:CurrentEvent 全局变量的 extra 字段,转换为字符串
Function EventSource:Object()
描述:获取当前事件源对象
返回值:CurrentEvent 全局变量的 source 字段
Function EventSourceHandle()
描述:获取当前事件源对象句柄
返回值:CurrentEvent 全局变量的 source 字段,转换为整数句柄