跳转到内容

BlitzMax/模块/事件/事件队列

来自维基教科书,开放世界中的开放书籍

事件队列是一个简单的先进先出队列,用于收集由应用程序发出的 TEvent 对象。

PollEventWaitEvent 命令可以用于接收事件队列中的下一个事件,而 PeekEvent 命令可以用于检查事件队列是否为空。

使用 PostEvent 将事件添加到事件队列。

全局变量

[编辑 | 编辑源代码]

CurrentEvent

[编辑 | 编辑源代码]

Global CurrentEvent:TEvent=NullEvent

描述:当前事件

信息CurrentEvent 全局变量包含由 PollEventWaitEvent 最近返回的事件。

PeekEvent

[编辑 | 编辑源代码]

Function PeekEvent:TEvent()

描述:检查事件队列中的下一个事件

信息PeekEvent 检查事件队列中的下一个事件,不会从事件队列中删除它或修改 CurrentEvent 全局变量。

如果事件队列中没有事件,PeekEvent 返回 Null

PollEvent

[编辑 | 编辑源代码]

Function PollEvent()

描述:从事件队列中获取下一个事件

返回值:事件队列中下一个事件的 ID,如果事件队列为空,则返回 0

信息PollEvent 从事件队列中删除一个事件并更新 CurrentEvent 全局变量。

如果事件队列中没有事件,PollEvent 返回 0。

WaitEvent

[编辑 | 编辑源代码]

Function WaitEvent()

描述:从事件队列中获取下一个事件,如果需要则等待

返回值:事件队列中下一个事件的 ID

信息WaitEvent 从事件队列中删除一个事件并更新 CurrentEvent 全局变量。

如果事件队列中没有事件,WaitEvent 会暂停程序执行,直到有事件可用。

PostEvent

[编辑 | 编辑源代码]

Function PostEvent( event:TEvent,update=False )

描述:将事件发布到事件队列

信息PostEvent 将事件添加到事件队列的末尾。

update 标志可以用于更新现有事件。如果 update 为 True 并且在事件队列中找到了具有相同 idsource 的事件,则将更新现有事件,而不是将 event 添加到事件队列。这对于防止诸如计时器事件之类的高频率事件淹没事件队列非常有用。

Function EventID()

描述:获取当前事件 ID

返回值CurrentEvent 全局变量的 id 字段

EventData

[编辑 | 编辑源代码]

Function EventData()

描述:获取当前事件数据

返回值CurrentEvent 全局变量的 data 字段

EventMods

[编辑 | 编辑源代码]

Function EventMods()

描述:获取当前事件修饰符

返回值CurrentEvent 全局变量的 mods 字段

Function EventX()

描述:获取当前事件 x 值

返回值CurrentEvent 全局变量的 x 字段

Function EventY()

描述:获取当前事件 y 值

返回值CurrentEvent 全局变量的 y 字段

EventExtra

[编辑 | 编辑源代码]

Function EventExtra:Object()

描述:获取当前事件额外值

返回值CurrentEvent 全局变量的 extra 字段

EventText

[编辑 | 编辑源代码]

Function EventText$()

描述:获取当前事件额外值,并转换为字符串

返回值CurrentEvent 全局变量的 extra 字段,转换为字符串

EventSource

[编辑 | 编辑源代码]

Function EventSource:Object()

描述:获取当前事件源对象

返回值CurrentEvent 全局变量的 source 字段

EventSourceHandle

[编辑 | 编辑源代码]

Function EventSourceHandle()

描述:获取当前事件源对象句柄

返回值CurrentEvent 全局变量的 source 字段,转换为整数句柄

华夏公益教科书