查看: 1538|回复: 5

关于setIgnoreHandledEventsMask方法屏蔽相应事件无效的问题

[复制链接]

该用户从未签到

发表于 2011-12-1 09:04:44 | 显示全部楼层 |阅读模式
您好!按教程《最长的一帧》里讲述,osg::GUIEventHandler 类中有setIgnoreHandledEventsMask方法,可以用来屏蔽相应。osgGA::TrackballManipulator继承自osg::GUIEventHandler类,按理也没问题,但我用如下方法想屏蔽掉鼠标拖拽操作,却始终无效,请问有没有遇到这种情况的?如何解决?期盼您的解答!非常感谢!
               osgGA::TrackballManipulator* tm=new osgGA:: TrackballManipulator;       
        tm->setIgnoreHandledEventsMask(osgGA:: GUIEventAdapter:: DRAG);
        viewer->setCameraManipulator(tm);

该用户从未签到

发表于 2011-12-1 10:01:06 | 显示全部楼层
简单来说,IgnoreHandledEventsMask不是那么单纯的,它处理的只是已经handle过的事件,如果这个事件同时被加入到mask中,则会忽略它。如果这个事件从来没有被处理过,那么它依然会被处理。我之前的书可能并没有说清楚这一点

该用户从未签到

 楼主| 发表于 2011-12-1 20:52:13 | 显示全部楼层
谢谢您的解答。不过还是看的不太明白。还是不知怎么去使用这个方法完成我想要的功能。目前只能用比较笨的办法,即创建一个继承自TrackballManipulator的新类,把handle函数重写,把drag那部分注释掉来解决了。

该用户从未签到

发表于 2011-12-5 09:38:01 | 显示全部楼层
这方法没什么笨的,可行就是好方法

该用户从未签到

 楼主| 发表于 2011-12-5 13:03:22 | 显示全部楼层
谢谢

该用户从未签到

发表于 2014-6-27 00:45:31 | 显示全部楼层
请问array大神,我怎么做可以“如果这个事件同时被加入到mask中呢”?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表