Я сейчас экспериментирую с событиями и пытаюсь передать окна в качестве параметров для изменения сцен (меню уровней и уровней на другие уровни), но моя основная проблема заключается в том, что программа не набирает мое ключевое событие. Я в основном взял код от here и просто добавил строки обзора для смены сцены. Прямо сейчас функция Change закомментирована, пока не смогу понять, почему keyevent не регистрируется.SFML - KeyEvents не работает
#include <SFML/Graphics.hpp>
void Change(sf::RenderWindow& rwindow);
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed){
window.close();
}
if(event.type == sf::Event::KeyPressed){
if(event.key.code == sf::Keyboard::Space){
window.clear();
sf::CircleShape shape(70.f);
shape.setFillColor(sf::Color::Red);
//Change(window);
}
}
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
void Change(sf::RenderWindow& rwindow){
rwindow.clear();
sf::CircleShape shape(70.f);
shape.setFillColor(sf::Color::Red);
}
Вы хотите сказать, что форма никогда не меняет цвет? Вы когда-нибудь отлаживали свой код? Поместите точку останова в определенные места, чтобы узнать, вызван ли вызов? Вы не должны очищать или рисовать в случайных местах, вместо этого вы должны следовать логике: вычислять физику и обновлять позиции, очищать экран, рисовать объекты, отображать на экране. – Lukas