【问题标题】:SFML event::TextEntered not working properlySFML 事件::TextEntered 无法正常工作
【发布时间】:2016-06-18 10:38:05
【问题描述】:

我正在做一个关于图像修改的学校项目,我正在使用 sfml 来制作类似于控制台但更“漂亮”的东西。

while (window.isOpen()) {
        Event event;
        while (window.pollEvent(event)) {

            if (event.type == Event::Closed)
                window.close();
        }
        if (event.type == sf::Event::TextEntered)
        {
            //display text on screen
        }
    }

问题是当我在显示屏上短按某个键时,它看起来好像我已经按住该键很长时间...

示例:按 G,希望在屏幕上只看到 1 G,但在屏幕上却显示为 20 G。

【问题讨论】:

    标签: c++ events text sfml keyevent


    【解决方案1】:

    您的if 属于事件轮询循环:

    while (window.isOpen()) 
    {
        Event event;
        while (window.pollEvent(event)) 
        {
    
            if (event.type == Event::Closed)
                window.close();
    
            if (event.type == sf::Event::TextEntered)
            {
               //display text on screen
            }
        }
    }
    

    根据您的描述,可能还有更多问题,但您需要发布更多代码才能看到。

    【讨论】:

      【解决方案2】:

      我认为这是因为按下一个键时总是会传输信号,所以 试试这个:

      sf::RenderWindow window(...);
      window.setKeyRepeatEnabled(false);
      while(...)
      {
          stuff...
      }
      

      【讨论】:

        猜你喜欢
        • 2015-02-25
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多