查看: 2159|回复: 3

提问:widget中setEventMask的真实含义

[复制链接]

该用户从未签到

发表于 2013-4-27 14:58:22 | 显示全部楼层 |阅读模式
设置屏蔽的事件么?如:
  1. setEventMask(osgWidget::EVENT_MOUSE_PUSH|osgWidget::EVENT_MASK_MOUSE_MOVE)
复制代码
是指的屏蔽掉鼠标按下和进入、停留、移动的事件么?那为什么在其后加入bool mousePush(***)、bool mouseEneter(***)、bool mouseLeave(***)的重载函数之后,依然会相应呢?

该用户从未签到

发表于 2013-4-27 15:07:18 | 显示全部楼层
应该是要处理的事件的类型吧

该用户从未签到

 楼主| 发表于 2013-4-27 15:32:37 | 显示全部楼层
liuzhiyu123 发表于 2013-4-27 15:07
应该是要处理的事件的类型吧

嗯嗯,刚才试验了一下,是要处理的事件类型,只是函数名起个Mask有点误导人的意思。
不过想追问下,Widget和Label对事件的响应有什么区别么?
如下代码中:
自定义的Widget
  1. struct myWidget:osgWidget::Widget()
  2. {
  3. public:
  4.    myWidget():osgWidget::Widget("","")
  5. {
  6.    setImage("**.png");
  7.    setTextureCoord(*,*,*);
  8.    ......//设置纹理坐标

  9.    setColor(1.0f,0.0f,0.0f,0.5f);
  10.    setEventMask(osgWidget::EVENT_ALL);
  11. }

  12. bool mousePush(*,*,*)
  13. {
  14.     setColor(1.0f,0.0f,0.0f,0.5f);

  15.     return true;
  16. }
  17. }
复制代码
自定义的Label
  1. struct myLabel:osgWidget::Label()
  2. {
  3. public:
  4.    myWidget():osgWidget::Widget("","")
  5. {
  6.    setLabel("MyLabel");

  7.    setColor(1.0f,0.0f,0.0f,0.5f);
  8.    setEventMask(osgWidget::EVENT_ALL);
  9. }

  10. bool mousePush(*,*,*)
  11. {
  12.     setColor(1.0f,0.0f,0.0f,0.5f);

  13.     return true;
  14. }
  15. }
复制代码
运行时发现自定义的Mylabel可以正常响应事件,而MyWidget却不能响应,跟踪代码发现MyWidget根本没有进入到mousePush函数中,请问这是什么原因呢?

该用户从未签到

发表于 2013-4-27 15:40:44 | 显示全部楼层
没有仔细研究过osgWidget,不过好像估计是Label处理了Push之后 就不在向上级传递了 这个只是我的猜测,您可以看看它的事件处理过程是怎么处理的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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