首页 > 解决方案 > 键盘事件 | SFML I 当我按下键时,它被读取两次

问题描述

我有这个标题:

void keyboardControl(sf::Event event) {
    if (event.type == sf::Event::KeyPressed) {
        if (event.key.code == sf::Keyboard::Up) {
            std::cout << "Pressed Up" << std::endl;
        }
        if (event.key.code == sf::Keyboard::Enter)
            std::cout << "Pressed Enter" << std::endl;
    }
}

代码 int main.cpp:

    int main() {
    sf::RenderWindow window(sf::VideoMode(WND_WIDTH, WND_HEIGHT), "SFML", sf::Style::Default);
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {

            if (event.type == sf::Event::Closed)
                window.close();
            keyboardControl(event);
        }
        window.clear();
        window.display();
    }

    return 0;
}

keyboardControl函数在 中的同一个地方被调用main.cpp,当您在控制台中按 ( Up, Down, Left, Right) 键时显示一次消息,同时按 时Enter显示两次,可能是什么错误?

在此处输入图像描述

PS 现在我已经编辑了代码,任何按UpEnter键都会导致控制台中的双重输出

标签: c++eventskeyboardsfml

解决方案


推荐阅读