首页 技术 正文
技术 2022年11月8日
0 收藏 540 点赞 1,872 浏览 1411 个字

  OSG的消息机制包括好多个头文件预定义及多个类。

  首先,消息接收相关的类当属osgGA::GUIEventHandler和osgGA::GUIEventAdapter这两个类了。前者处理OSG程序与用户交互,处理事件,事件全靠handle这个函数。此函数的定义:

重载1: virtual bool handle(osgGA::Event* event, osg::Object* object, osg::NodeVisitor* nv);

重载2: virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& aa, osg::Object*, osg::NodeVisitor*) { return handle(ea,aa); }

重载3:  virtual bool handle(const GUIEventAdapter&,GUIActionAdapter&) { return false; }

const GUIEventAdapter&ea用来控制事件类型,GUIActionAdapter用来获得viewer和视口以及上下文,还可以传入一个额外的类object,还可以传入一个Nodevisitor,一般只用前两个参数即可,我们多数情况下运用的也是这两个参数,ea主要用来控制所得到的事件类型,aa用于控制场景viewer以及上下文,窗口等等,可以自定义一些场景变换。

  注意,我们大多数情况下用的是重载函数3,股沟进行事件类型及信息获取和控制场景viewer以及上下文,窗口等。

  const GUIEventAdapter中有一个重要的枚举类型

enum EventType {            NONE                = 0,            PUSH                = 1<<0,            RELEASE             = 1<<1,            DOUBLECLICK         = 1<<2,            DRAG                = 1<<3,            MOVE                = 1<<4,            KEYDOWN             = 1<<5,            KEYUP               = 1<<6,            FRAME               = 1<<7,            RESIZE              = 1<<8,            SCROLL              = 1<<9,            PEN_PRESSURE        = 1<<10,            PEN_ORIENTATION     = 1<<11,            PEN_PROXIMITY_ENTER = 1<<12,            PEN_PROXIMITY_LEAVE = 1<<13,            CLOSE_WINDOW        = 1<<14,            QUIT_APPLICATION    = 1<<15,            USER                = 1<<16        };

  具体事件对应为:

OSG中常用的事件类型代码值事件类型NONE0无事件PUSH1鼠标某键按下RELEASE2鼠标某键弹。DOUBLECLICK4鼠标某键双击一般视为1代表左键,2代表中键,4代表右键。枚举类型MouseButtonMaskDRAG8鼠标某键拖动MOVE16鼠标移动KEYDOWN32键盘上某键按下KEYUP64键盘上某键弹起FRAME128图像帧(与时间有关)RESIZE256窗口大小改变时会有的事件SCROLL512鼠标轮滚动PEN_PRESSURE     1024手写板的某事件PEN_PROXIMITY_ENTER2048手写板的某事件PEN_ORIENTATION 4096手写板的某事件PEN_PROXIMITY_LEAVE8192手写板的某事件CLOSE_WINDOWS     16384关闭窗口QUIT_APPLICATION     32768退出程序USER              65536   用户定义

  按键值就是对应的ASCLL码。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,944
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,470
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,284
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,100
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,730
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,766