Bonjour,
Dans mon programme, j'ai une boucle principale situeé dans la fonction main(), où sont traités les événements principaux comme "quitter le programme" si on appui sur escape.
Mon problème, c'est que j'ai une classe ou je veux également tester les evenements par exemple "se déplacer à droite" si on appui sur "->". Seulement, cette classe est appellée apres la gestion des evenements principaux, et à ce moment la, la variable event est nulle, puisque le SDL_PollEvent de la boucle principale a tout supprimé.
Je cherche donc un moyen, pour que soit les événement soient tous enregistrer dans 2 variables distincts, soit que la boucle principale parcourt les événements sans les détruire.
Voici grosso modo le code :
main()
et ici une méthode appellée par Engine.PlayScene()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 //Boucle principale while(!done) { //Gestion des événements clavier et sourie while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: done = true; break; case SDL_KEYDOWN : keys = SDL_GetKeyState(NULL); if ( keys[SDLK_ESCAPE] ) {done = true;} break; } } //Joue la scene Engine.PlayScene(); //Contrôle de la fréquence d'affichage SDL_framerateDelay(&manager); //Permuttation des écrans (double buffering) SDL_GL_SwapBuffers(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: done = true; break; case SDL_KEYDOWN : keys = SDL_GetKeyState(NULL); if ( keys[SDLK_RIGHT] ) {....;} break; }
Partager