游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1707|回复: 1

OGRE中关于键盘的问题

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-6-10 16:37:00 | 显示全部楼层 |阅读模式

  OGRE中关于键盘的问题: OGRE中有IsKeyDown()可以判断是否有键盘按钮被按下,但是有一个问题,就是我们按下键盘的时候虽然时间是非常短的,但是对于计算机来说是比较久的,所以你按的那段时间,其实OGRE已经接收了很多次KEYDOWN。这样的话,有些情况就会有问题了,比如: 你有两个光源,然后你可以通过bool变量state来选择使用那个光源,假如state = true就使用光源1,state = false就使用光源2。那么我们当然会设置一个按钮,比如'S'来转换状态
   一般代码如下:
         if( IsKeyDown( KC_S)){
              state != state;
         }


这样的话,问题就来了,你按‘S’的时候,其实IsKeyDown已经判断了很多次,这样的话上面的代码其实已经执行了很多次了,所以state最后的状态是不确定的!
    改进的方法有很多种,这里说一下一种比较简单的吧

   改进代码:
   
   bool m_state = false;
   

    if( IsKeyDown( KC_S) && !m_state){
              m_state = true;
              state != state;
         }
    if( !IsKeyDown( KC_S )){
          m_state = false;
    }
  上述的代码中加入了一个m_state,很简单的,大家看一下就明白了!


  [em20] [em20]

10

主题

69

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2007-6-11 14:33:00 | 显示全部楼层

Re:OGRE中关于键盘的问题

这个在标准的基本教程里就有吧……

里面还详细的描述了ogre处理输入的方法,以及目前阶段的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 04:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表