查看: 1424|回复: 3

请教addEventHandler

[复制链接]

该用户从未签到

发表于 2012-8-12 14:09:43 | 显示全部楼层 |阅读模式
我按照视频教程中的例子,添加eventHandler如下:
class PrintName : public osgGA::GUIEventHandler
{
public:
        virtual void getUsage(osg::ApplicationUsage& usage) const
        {
                usage.addKeyboardMouseBinding("Jin Yu", "Great.");
        }
};

int main()
{
        osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
        osg::ref_ptr<osg::Node> node = new osg::Node;

        node = osgDB::readNodeFile("glider.osg");                                //读取模型
       
        /* 添加事件 */
        viewer->addEventHandler(new PrintName);                                        //添加PrintName中的事件
        viewer->addEventHandler(new osgViewer::HelpHandler);        //添加帮助事件       
        viewer->addEventHandler(new osgViewer::StatsHandler);        //添加帧数事件
        viewer->addEventHandler(new osgViewer::WindowSizeHandler);        //添加全屏非全屏事件
        viewer->addEventHandler(new osgViewer::ScreenCaptureHandler);        //添加截屏事件

        viewer->setSceneData(node.get());

        return viewer->run();
}

但是addEventHandler显示的顺序并不是我添加时的顺序,请问如何解决?

该用户从未签到

发表于 2012-8-13 08:03:54 | 显示全部楼层
怎么看出不是添加的顺序?

该用户从未签到

 楼主| 发表于 2012-8-13 13:04:27 | 显示全部楼层
liuzhiyu123 发表于 2012-8-13 08:03
怎么看出不是添加的顺序?

比如我程序中,“viewer->addEventHandler(new PrintName);  ”这个事件率先加载,那么“Jin Yu        Great.”这句话应该是第一行显示出来

但实际情况如下:
screen_shot_0_0.jpg

该用户从未签到

发表于 2012-8-14 10:14:58 | 显示全部楼层
getUsage()输出的顺序是,先输出漫游器的帮助信息,再输出各个EventHandler的帮助信息,所以我想在您的信息之前是漫游器的帮助信息,您的handler依然是排在第一位的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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