一,事件处理
Screen事件,包括输入和常规事件,与给定的上下文相关联,通常在主应用程序的循环中处理。
Screen在服务器端管理每个上下文的事件队列。Screen为每个上下文创建事件队列,最大队列大小默认为200。此值可在graphics.conf的全局部分配置。如果有比指定的队列大小更多的事件,则此队列大小不会增长。这意味着如果应用程序在更多事件排队超过队列容量之前未得到处理,则可能会丢失事件。
在应用程序调用 screen_get_event() 之前,事件会一直存在于服务器上的上下文队列中。调用后,事件将从事件队列传输到应用程序(事件的内容从服务器复制到客户端的事件对象)。一旦传输到应用程序,事件就可以在应用程序的事件处理例程中使用 screen_get_event_property_*() 来相应地处理事件。
应用程序在从服务器检索事件之前,必须通过调用 screen_create_event() 创建一个事件对象来存储事件。这是应用程序在调用 screen_get_event() 从服务器获取事件时使用的事件对象。应用程序创建事件后,从服务器复制一份,应用程序就可以确定事件的生存期。一旦应用程序检索到事件,服务器上就不再存在该事件。
事件处理如下图:
screen_get_event_property_*() 和 screen_set_event_property_*() 有几种变体,分别用于获取和设置事件属性。值得注意的是,不同类型的事件允许选择不同的可查询或可设置属性。此规则的例外是 SCREEN