【发布时间】: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");
}
}
}
如果我不使用全屏模式,而是像这样初始化window,KeyRelease 事件就可以正常工作:
sf::RenderWindow window(sf::VideoMode(1400, 950), "My Game", sf::Style::Default, settings);
【问题讨论】:
-
它似乎是从 SFML 2.0 的回归...你可以在 github.com/LaurentGomila/SFML/issues 上打开一个问题
-
谢谢@Hiura,我添加了这个问题。 github.com/LaurentGomila/SFML/issues/465