zoukankan      html  css  js  c++  java
  • 防止Direct Input获取多次输入

    如果将Direct input处理键盘输入的函数放到游戏循环中,由于Direct Input速度极快,用户的一次按键,Direct Input将会产生多次按键事件,导致程序多次被响应,处理如下。

    char hitLetter = '';
    static bool keyPressed = false;
    if(dinput_->getKey())
    {
        if(!keyPressed)
        {
            hitLetter = dinput_->getKey();
    keyPressed = true; } }
    else { keyPressed = false; }

    关键在于keyPressed这个静态变量,初始为false,当有键按下时,dinput_->getKey()返回真值,下面的if语句判断也为真,此时将按键读入hitLetter中,并将keyPressed置为true。这样只要按键没有抬起来,当程序下次进入时,keyPressed已经为true,if语句将不再执行。当按键抬起时,dinput_->getKey()返回值不再为真,这时进入else语句,将keyPressed置为false,继续接受下一次按键。

    另一个方法是将Direct Input处理键盘输入的函数放到消游戏循环外,以确保每次按键只被处理一次。比如放到WM_KEYDOWN的消息中处理。或者直接使用Windows键盘消息,而不是用Direct Input。

    ==

    作者:zdd
    出处:http://www.cnblogs.com/graphics/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    人机交互设计 课后作业--评价正在使用的输入法
    站立会议10--个人总结
    站立会议09--个人总结
    08个人总结
    站立会议07--个人总结
    站立会议06--个人总结
    站立会议05--个人总结
    软件工程概论-合作作业01
    软件工程概论-个人作业04
    学习进度(第四周)
  • 原文地址:https://www.cnblogs.com/graphics/p/2737965.html
Copyright © 2011-2022 走看看