查看: 2079|回复: 5

osgGA::GUIEventAdapter::setX() 错误

[复制链接]

该用户从未签到

发表于 2009-3-19 10:57:16 | 显示全部楼层 |阅读模式
不能将“this”指针从“const osgGA::GUIEventAdapter”转换为“osgGA::GUIEventAdapter &”
bool TravelManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us)
{
        //得到鼠标的位置
        float mouseX = ea.getX();
        float mouseY = ea.getY();
        const float www=100.0f;
         ea.setX();//这里赋予参数就出现上面的错误 怎么回事 谁能解释下
}

该用户从未签到

 楼主| 发表于 2009-3-19 11:01:57 | 显示全部楼层
问题以解决  

可能是 const osgGA::GUIEventAdapter& ea     const 的问题,去掉后编译通过

该用户从未签到

 楼主| 发表于 2009-3-19 11:28:03 | 显示全部楼层
但是这样   程序似乎没有了消息映射

去掉 const  handle()函数没有用了。 加上编译ea.setx()又不能通过

怎么回事啊!!!

该用户从未签到

 楼主| 发表于 2009-3-19 11:42:01 | 显示全部楼层
osgGA::GUIActionAdapter& us  

us.requestWarpPointer(200.0f,200.0f);
也可以达到我想要的效果。开源的东西就这点麻烦,在帮助文档里找了半天才发现。

该用户从未签到

发表于 2009-3-19 12:37:24 | 显示全部楼层
很高兴您用自己的方式解决了问题。osgGA::GUIEventAdapter::setX()是不能在handle函数里面使用的,因为此时事件已经从队列中取出来了,再设置它的值没有意义。
而您一开始将const osgGA::GUIEventAdapter& ea改为osgGA::GUIEventAdapter& ea,改变了虚函数的性质,使之不再成为一个虚函数了,因此它会失效。
而您后来所用的requestWarpPointer,事实上是用户函数中唯一可以用来直接设置鼠标位置的方法。

该用户从未签到

 楼主| 发表于 2009-3-19 13:41:47 | 显示全部楼层
呵呵  版主就是不一样啊 !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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