Bonjour,
J'ai un petit problème assez embêtant : j'ai créé un petit prog tout simple où il suffit de faire un clic droit pour changer la couleur de l'écran. Le problème est que cela me fait clignoter mon écran lorsque le curseur est statique. Il faut alors que je le bouge pour que l'effet de clignotement disparaisse...
Le clignotement est dû à la boucle qui tourne sans arrêt et qui réactive l'event "changement de couleur d'écran" à chaque tour, alors que cela devrait donc le faire que quand je fais un clic droit.
Mon code source (allégé) :
Je suis en PoolEvent et avec un delay de 40ms car j'ai des évènements redondants dans mon code complet : un personne avance vers mon curseur.
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
32
33
34
35
36
37
38 #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> int main(int argc, char *argv[]) { // variables SDL_Surface *ecran = NULL; SDL_Event event; unsigned char encore=1, c=200, mode=1; // initialisation SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(400, 300, 32, SDL_HWSURFACE); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, c, c, c)); // boucle while(encore){ SDL_Delay(40); SDL_PollEvent(&event); if(event.type == SDL_QUIT) encore=0; // changement de mode if(event.type == SDL_MOUSEBUTTONUP){ if(event.button.button == SDL_BUTTON_RIGHT){ if(mode) mode=0; else mode=1; if(mode) c=100; else c=200; } } // mise à jour ecran SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, c, c, c)); SDL_Flip(ecran); } SDL_Quit(); return EXIT_SUCCESS; }
Je n'arrive pas à corriger ce prob par moi-même. Pouvez-vous me donner un coup de main ?
Merci,
Chris.
Partager