【问题标题】:KeyRelease Event not fired in fullscreen mode在全屏模式下未触发 KeyRelease 事件
【发布时间】:2013-09-19 02:29:04
【问题描述】:

正如标题所说,KeyRelease 事件在 Mac OS X 上的全屏模式下根本不会触发(尚未测试 Linux/Windows,也可能被破坏)。

代码如下:

sf::ContextSettings settings;
settings.antialiasingLevel = 8;

sf::RenderWindow window(sf::VideoMode::getDesktopMode(), "My Game", sf::Style::Fullscreen, settings);
window.setFramerateLimit(60);
window.setVerticalSyncEnabled(true);
window.setMouseCursorVisible(false);

while (window.isOpen())
{

    while (window.pollEvent(event))
    {
        // Close window : exit
        if (event.type == sf::Event::Closed) {
            window.close();
        }

        if (event.type == sf::Event::KeyPressed) {
                switch (event.key.code) {
                    case sf::Keyboard::Escape: // Escape pressed : exit
                        window.close();
                        break;
                    default:
                        game->handleKeyCode(event.key.code);
                        break;
                }

        } else if(event.type == sf::Event::KeyReleased) {
                printf("KeyRelease Fired!\n");
        }
    }
}

如果我不使用全屏模式,而是像这样初始化windowKeyRelease 事件就可以正常工作:

sf::RenderWindow window(sf::VideoMode(1400, 950), "My Game", sf::Style::Default, settings);

【问题讨论】:

标签: c++ macos sfml


【解决方案1】:

recent commit 解决了这个问题。从它的 git 编译 SFML 应该可以解决这个问题。有关编译的更多详细信息,请参阅the official tutorial

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2016-06-03
    • 2012-03-26
    • 2013-09-17
    • 1970-01-01
    • 2020-04-09
    • 2011-12-05
    相关资源
    最近更新 更多