我正试图绕圈移动。为什么这样不起作用?我没有正确编写键盘代码吗?我被卡住了。
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "Test");
sf::CircleShape me(10.f);
me.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(me);
window.display();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {
me.move(20,0);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {
me.move(-20, 0);
}
return 0;
}
需要在窗口的pollEvent函数内部调用键盘事件,如下所示:
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "Test");
sf::CircleShape me(10.f);
me.setFillColor(sf::Color::Green);
int x = 100;
me.setPosition(x, 100);
while (window.isOpen()) {
Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed) window.close();
if (event.type= Event::KeyPressed) {
if (event.key.code == Keyboard::Right) {
x += 10;
me.setPosition(x, 100);
}
else
if (event.key.code == Keyboard::Left)
{
x -= 10;
me.setPosition(x, 100);
}
}
}
window.clear();
window.draw(me);
window.display();
}
}