查看: 1558|回复: 5

获取更新回调的问题

[复制链接]

该用户从未签到

发表于 2011-7-21 22:36:29 | 显示全部楼层 |阅读模式
在场景中有个PositionAttitudeTransform节点,关联了两个EventHandler,第一个是添加动画路径的,第二是对pat节点的回调,实时获取位置的。这两个添加EventHandler的操作均在viewer的EventHandler函数的键盘响应操作中进行。
现在要获取pat节点的动画路径的EventHandler,以便删除,添加新的路径,这个操作也在viewer的EventHandler函数的键盘响应操作中进行。
如果对viewer进行getEventHandler,获得的列表只有一个成员,就是给viewer添加的EventHandler,而并不包括pat的EventHandler。
请问,如果获得这个pat的添加路径的EventHandler呢?

该用户从未签到

发表于 2011-7-22 00:47:14 | 显示全部楼层
完全没有必要关联两个EventHandler事件~~~~~~~~~

该用户从未签到

发表于 2011-7-22 08:10:17 | 显示全部楼层
如果对viewer进行getEventHandler,获得的列表只有一个成员,就是给viewer添加的EventHandler,而并不包括pat的EventHandler
如果这两个Handler都是添加给viewer的,那么您想必能获得它们两个,这一点不会有问题

该用户从未签到

 楼主| 发表于 2011-7-22 09:34:38 | 显示全部楼层
问题是,并没有给viewer添加两个Handler。
过程如下:
给viewer添加一个handler,
  1. viewer->addEventHandler(new UseEventHandler(pat));      //UseEventHandler为自己定义的handler,pat是PositionAttitudeTransform节点
复制代码
在viewer的UseEventHandler中,添加pat的更新回调
  1. pat->addUpdateCallback(new osg::AnimationPathCallback(animationPath.get(),0.0f,1.0f));      //路径动画的更新回调
  2. pat->addUpdateCallback(new AnimationCallBack()):      //自定义的更新回调,用于回调中获取pat的位置
复制代码
请问,如果不用给pat添加两个更新回调,合并成一个该怎么做?
如何获取pat的路径动画的更新回调,以便删除后重新添加新的路径?

该用户从未签到

发表于 2011-7-22 12:51:51 | 显示全部楼层
既然您是想要取得更新回调的话,自然应该用获取更新回调的方式来得到Callback,为什么执著于获得Handler??getUpdateCallback()可以得到第一个加入的更新回调,然后用Callback的getNestedCallback()来获取与其毗邻的下一个回调对象

该用户从未签到

 楼主| 发表于 2011-7-22 18:35:27 | 显示全部楼层
研究了一上午,以为getUpdateCallback获得的是最后一个加入的更新回调,原因是看到addUpdateCallback的代码中是用insert加入的。于是乎就辗转到viewer去了……原来如此啊,折腾死我了。感谢啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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