看了王锐大大的书,我感觉OSG中对事件的处理主要是由以下几块组成的:
1、事件适配器 GUIEventAdapter
这个类是作为系统交互事件和OSG交互事件的适配接口。这一句话还不是很理解。
源码文档里对于这个类的定义是:事件类,存储键盘、鼠标和窗口事件。
公有类型包括:
(这些类型都是枚举类型,每个类型中有若干整形常量)
MouseButtonMask
EventType :OSG中定义了的人机交互事件类型
KeySymbol:OSG中的键盘按键标识
ModKeyMask:OSG中的键盘按键标识2
MouseYOrientation
ScrollingMotion
TabletPointerType
enum TouchPhase{TOUCH_UNKNOWN,TOUCH_BEGAN,TOUCH_MOVED,TOUCH_STATIONERY,TOUCH_ENDED}
2、动作适配器 GUIActionAdapter
用户向系统传递请求通过GUIActionAdapter类来实现。所有的动作都会传递给平台相关的窗口系统。
3、事件队列
EventQueue就是事件队列,可以理解为一个交互事件的集合,它保存了一个GUIEventAdapter的队列,记录了所有传递给场景的鼠标和键盘事件。
4、事件处理器
GUIEventHandler,是OSG键盘和鼠标交互事件的处理终端,它提供了可扩展的虚函数handle(),这个函数是用户自定义的交互事件处理工具。通过对这个类的派生和虚函数的重构就能够构建用户自定义的事件处理器,对相应的事件做出相应的操作。
5、virtual bool osgGA::GUIEventHa