Forum de la communauté SFML
Aide => Système => Discussion démarrée par: syapk le Juillet 15, 2020, 03:35:09 am
-
Bonjour
merci pour cette superbe bibliothèque Laurent & co !
voici mon pb:
Dans la boucle principale je rentre dans pollevent puis "if" wait event, afin d'effectuer la pause.
tout fonctionne bien avec la touche "p" pour pause puis touche "m" pour depause.
mais bien sur je voudrais avoir la meme touche "p" pour pause/depause, mais ca ne pause pas...
merci pour votre aide
ps: une histoire de buffer..?!..
while (app.isOpen())
{
while (app.pollEvent(event))
{
if (event.key.code == sf::Keyboard:: P)
{
while(app.waitEvent(event))
//if(event.key.code == sf::Keyboard:: P)break;
if(event.key.code == sf::Keyboard:: M)break;
}
}
app.display();
}
-
Il faut vraiment vérifier le type de l'évènement avant d'en utiliser ses données.
https://www.sfml-dev.org/tutorials/2.5/window-events-fr.php#les-cevcinements-keypressed-et-keyreleased
-
Je comprends pas ta reponse "G." car le programme compile sans erreur donc pas d'erreur a ce niveau la.
en tout cas résolu car il suffisait de verifier non pas 1 mais 2 condition dans le if, la touche P && keyPressed.
while (app.pollEvent(event))
{
if (event.key.code == sf::Keyboard:: P &&
event.type == sf::Event::KeyPressed)
{
while(app.waitEvent(event))
if(event.key.code == sf::Keyboard:: P &&
event.type == sf::Event::KeyPressed)
break;
}
}
-
event.type == sf::Event::KeyPressed
Ben ouais c'est ce que j'ai dit :pvérifier le type de l'évènement
-
Et c'est mieux de le vérifier avant d'accéder aux données de l'évènement (ie. inverse l'ordre de tes conditions dans les if), sinon tu as en théorie un comportement indéterminé, car tu accèdes potentiellement à un membre d'union qui n'est pas initialisé.
-
ok enfin compris ce que tu daigné de me faire comprendre :o
merci ;D
j'ai commencé la programmation il ya 7mois: C::B, C,C++, la compilation, linker, GLSL,SFML,Boost,etc.. alors tout se mélange mais ca s'éclaircis de plus en plus grace a vous .