sf::Event::Keypressed 在轮询事件循环内不工作 -SFML-2.5.1
sf::Event::Keypressed not working inside of poll event loop -SFML-2.5.1
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
int main(){
sf::RenderWindow window(sf::VideoMode(640, 480), "Window");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
switch (event.type)
{
case sf::Event::Closed:
window.close(); break;
case sf::Event::KeyPressed:
std::cout << event.key.code;
break;
}
}
}
return 0;
}
我收到一堆这样的警告enumeration value 'MouseLeft' not handled in switch
我试着把它放在一个 if
语句而不是一个 switch
中,这样就消除了警告,但它仍然不会输出 event.key.code
我只能让它工作我把它放在 pollevent(event)
循环之外,但后来字母没有被拾取。
在您的 cout
之后添加一个 << std::flush;
,您将看到关键代码。否则,在离开 SFML 主循环之前不会打印它们(不是在中断时而是在使用 x 按钮正常关闭时)。
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
int main(){
sf::RenderWindow window(sf::VideoMode(640, 480), "Window");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
switch (event.type)
{
case sf::Event::Closed:
window.close(); break;
case sf::Event::KeyPressed:
std::cout << event.key.code;
break;
}
}
}
return 0;
}
我收到一堆这样的警告enumeration value 'MouseLeft' not handled in switch
我试着把它放在一个 if
语句而不是一个 switch
中,这样就消除了警告,但它仍然不会输出 event.key.code
我只能让它工作我把它放在 pollevent(event)
循环之外,但后来字母没有被拾取。
在您的 cout
之后添加一个 << std::flush;
,您将看到关键代码。否则,在离开 SFML 主循环之前不会打印它们(不是在中断时而是在使用 x 按钮正常关闭时)。