OSG学习:响应键盘鼠标示例
2017-07-02 17:17
344 查看
示例功能:示例里面有两个模型,一个是牛,另一个是飞机。鼠标右键时牛和飞机都隐藏,鼠标左键双击时牛和飞机都显示,按键盘上面的LEFT键,显示牛,按键盘上面的RIGHT键显示飞机。其中显示与隐藏节点使用的是setNodeMask(bool)。bool的值为0的时候是隐藏,1的时候是显示。
结果图:
#include<osgDB\ReadFile> #include<osgViewer\Viewer> #include<osg\Node> class UseEventHandler :public osgGA::GUIEventHandler { public: virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa); if (!viewer)return false; switch (ea.getEventType()) { case osgGA::GUIEventAdapter::KEYDOWN: { if (ea.getKey() == 0xFF51) { viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0); viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1); } if (ea.getKey() == 0xFF53) { viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0); viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1); } break; } case osgGA::GUIEventAdapter::PUSH: if (ea.getButton() == 4) { viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0); viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0); } break; case osgGA::GUIEventAdapter::DOUBLECLICK: if (ea.getButton() == 1) { viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1); viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1); } break; default: break; } return false; } }; void main() { osgViewer::Viewer viewer; osg::ref_ptr<osg::Group> root = new osg::Group(); root->addChild(osgDB::readNodeFile("cow.osg")); root->addChild(osgDB::readNodeFile("glider.osg")); viewer.setSceneData(root.get()); viewer.addEventHandler(new UseEventHandler); viewer.realize(); viewer.run(); }
结果图:
相关文章推荐
- OSG学习:响应键盘鼠标示例
- ActionScript3(AS3)类库学习之(九)——响应鼠标和键盘
- 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表
- DXUT 学习笔记(3)对键盘鼠标的响应 及 消息处理
- javascript 中响应鼠标和键盘事件
- GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- vc中如何响应键盘和鼠标事件
- Java Applet编程响应鼠标键盘-Java基础-Java-编程开发
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- Windows应用程序对键盘与鼠标的响应总结
- vc中如何响应键盘和鼠标事件
- vc中如何响应键盘和鼠标事件
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- vc中如何响应键盘和鼠标事件
- 发布这几天学习Hook搞出来的一个挺好玩的统计鼠标移动距离和键盘敲击次数的小程序