查看: 3815|回复: 11

osg组合键的实现

[复制链接]

该用户从未签到

发表于 2009-8-11 20:57:22 | 显示全部楼层 |阅读模式
怎么在osg中实现组合键?

该用户从未签到

发表于 2009-8-11 22:42:46 | 显示全部楼层
需要自己建立一个键盘缓冲区,把接收到的键盘事件保存起来,然后统一处理

该用户从未签到

发表于 2009-8-11 22:44:10 | 显示全部楼层
case后再判断~~~~有什么很大的问题吗???

该用户从未签到

 楼主| 发表于 2009-8-16 14:04:04 | 显示全部楼层
自己试过了再来说

该用户从未签到

 楼主| 发表于 2009-8-16 14:35:14 | 显示全部楼层
在论坛中找到了答案!谢谢
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-8-16 16:12:38 | 显示全部楼层
    请楼上上传头像

    该用户从未签到

    发表于 2011-11-14 22:09:09 | 显示全部楼层
    您好,请问楼主是如何解决组合键的问题的?我试了ea.getKey() == osgGA::GUIEventAdapter::KEY_Control_L && ea.getKey() == osgGA::GUIEventAdapter::KEY_Up ,好像不能得到组合键的响应。请指教,谢谢!

    该用户从未签到

     楼主| 发表于 2011-11-15 12:09:08 | 显示全部楼层
    按array说的就可以,keydown和keyup事件时仅在键盘缓冲区做标志,然后在frame事件中根据键盘缓冲区处理

    该用户从未签到

    发表于 2011-11-15 14:50:07 | 显示全部楼层
    本帖最后由 xuganggm 于 2011-11-15 14:52 编辑

    没有自己尝试过,但是看到 osg 里面有这样的代码
    1. unsigned int buttonMask = _ga_t1->getButtonMask();
    2. if(buttonMask == (GUIEventAdapter::LEFT_MOUSE_BUTTON | GUIEventAdapter::RIGHT_MOUSE_BUTTON))
    3. {....
    4. }
    复制代码
    这样可以吗?

    该用户从未签到

     楼主| 发表于 2011-11-20 21:33:58 | 显示全部楼层
    楼上的是鼠标按键,实际上如果是组合键是几个已知功能键合字符键组合的话,可以使用getModKey和getkey两者联合判断即可

    该用户从未签到

    发表于 2011-12-21 10:25:56 | 显示全部楼层
    本帖最后由 hunandx2010 于 2011-12-21 10:40 编辑
    fenma3422 发表于 2011-11-20 21:33
    楼上的是鼠标按键,实际上如果是组合键是几个已知功能键合字符键组合的话,可以使用getModKey和getkey两者联 ...


    您说得意思是这样吗:
    if (ea.getModKeyMask() == osgGA::GUIEventAdapter::KEY_Shift_L)
    {
          if (ea.getKey() == 0xFF52 )  
         {  
         }  
       return true;
    }
    或者是if (ea.getModKeyMask() == osgGA::GUIEventAdapter::KEY_Shift_L && ea.getKey() == 0xFF52 )
    我试过这两种方法,好像都得不到组合键响应的,不知道是哪里错了,谢谢指点。

    另外您上面说的“keydown和keyup事件时仅在键盘缓冲区做标志,然后在frame事件中根据键盘缓冲区处理”。我不是很明白,您可以说的具体点吗,或者哪里有这方面例子和资料呢?非常感谢!

                

    该用户从未签到

     楼主| 发表于 2011-12-21 12:04:07 | 显示全部楼层
    ModKeyMask和KeySymbol是两个不同概念,请你查看定义,然后再重写判断条件
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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