1

正如标题所说,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");
        }
    }
}

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

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

1 回答 1

1

最近的提交解决了这个问题。从它的 git 编译 SFML 应该可以解决这个问题。有关编译的更多详细信息,请参阅官方教程

于 2013-09-20T20:40:52.850 回答