Corps principal du programme:
while (true)
{
if (app->fenetre->hasFocus())
{
if (app->input->gerer()) //Gestion des inputs (renvoie true si fermeture du programme)
{
app->fenetre->close();
break;
}
app->gerer(); //Gestion du programme
app->afficher(); //Affichage
}
}
Super, ça à l'air de fonctionner. Merci :)
Tant qu'on y est, il arrive aussi parfois que l'évènement
if (event.type == sf::Event::Closed)
soit vrai lorsque je lance mon programme (lors de la 1ère frame disponible, résultant la fermeture du programme).
Mon code:
bool CInput::gerer()
{
app->fenetre->pollEvent(event);
if (event.type == sf::Event::Closed) {return true;}
...
}
Pour palier à ce problème, j'utilise un booléen statique:
bool CInput::gerer()
{
app->fenetre->pollEvent(event);
static bool quit = false;
if (event.type == sf::Event::Closed) {return quit;}
quit = true;
...
}
Ça marche, mais je trouve ça un peu dégueulasse, une idée encore une fois ?
Trouvé !
if (app->fenetre->pollEvent(event))
{
if (event.type == sf::Event::Closed)
return true;
}
Je gère les évènements clavier avec sf::Keyboard (bien plus souple).