osgWidget.Event
是OpenSceneGraph中的一个类,用于处理窗口小部件的事件,提供了基于事件的输入处理方法,如按键、鼠标移动、滚轮、拖拽等。
osg::ref_ptr<osgWidget::Window>
window
- 事件所属的窗口小部件。
double
time
- 事件发生的时间,以秒为单位。
osgGA::GUIEventAdapter::EventType
type
- 事件类型。
osgGA::GUIEventAdapter::MouseButtonMask
buttonMask
- 鼠标按键状态。
osgGA::GUIEventAdapter::KeySymbol
keySymbol
- 按键符号码。
unsigned int
keyModifiers
- 按键修改器。
int
x
- 鼠标指针的X坐标。
int
y
- 鼠标指针的Y坐标。
float
scrollingDelta
- 滚轮变化量。
float
dx
- 鼠标指针X方向的移动距离。
float
dy
- 鼠标指针Y方向的移动距离。
osgWidget::Event(osg::ref_ptr<osgWidget::Window> window, double time, osgGA::GUIEventAdapter::EventType type, unsigned int buttonMask, osgGA::GUIEventAdapter::KeySymbol keySymbol, unsigned int keyModifiers, int x, int y, float scrollingDelta, float dx, float dy)
- 构造函数。创建一个新的osgWidget.Event
实例。
osg::ref_ptr<osgWidget::Window>
getWindow()
- 获取事件所属的窗口小部件。
double
getTime()
- 获取事件发生的时间。
osgGA::GUIEventAdapter::EventType
getType()
- 获取事件类型。
osgGA::GUIEventAdapter::MouseButtonMask
getButtonMask()
- 获取鼠标按键状态。
osgGA::GUIEventAdapter::KeySymbol
getKeySymbol()
- 获取按键符号码。
unsigned int
getKeyModifiers()
- 获取按键修改器。
int
getX()
- 获取鼠标指针的X坐标。
int
getY()
- 获取鼠标指针的Y坐标。
float
getScrollingDelta()
- 获取滚轮变化量。
float
getDeltaX()
- 获取鼠标指针X方向的移动距离。
float
getDeltaY()
- 获取鼠标指针Y方向的移动距离。
osg::ref_ptr<osgWidget::Window> myWindow = new osgWidget::Window("My Window", 0, 0, 640, 480);
myWindow->addEventHandler(new MyEventHandler());
class MyEventHandler : public osgWidget::EventHandler
{
public:
virtual bool handle(const osgWidget::Event& ev, osgWidget::Widget* widget)
{
switch(ev.getType())
{
case osgGA::GUIEventAdapter::KEYDOWN:
// 处理按键事件
break;
case osgGA::GUIEventAdapter::MOVE:
// 处理鼠标移动事件
break;
case osgGA::GUIEventAdapter::SCROLL:
// 处理鼠标滚轮事件
break;
case osgGA::GUIEventAdapter::DRAG:
// 处理拖拽事件
break;
}
return true;
}
};