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 に答える