Hellow, je suis en train de coder un jeu avec la SDL (jedi-SDL) et je voudrais créer un timer qui appelle une fonction d'affichage toutes les 30 ms. J'arrive à lancer un timer lorsque je n'ai aucun paramètre à donner à ma fonction de callback, mais lorsque je veux en mettre, le compilateur m'indique des erreurs que je n'arrive pas à corriger.
La doc de la fonction SDL_AddTimer : http://jedi-sdl.pascalgamedevelopmen...laddtimer.html
Mon code :
En gros ce code permet de réafficher l'image de fond toutes les 30 ms (ce n'est qu'un début : plus tard, la fonction affichera tous les graphismes du jeu).
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 type timerParam = ^TtimerParam; TtimerParam = record scr : PSDL_Surface; imgFond : PSDL_Surface; end; function actualise(intervalle : UInt32; param : pointer) : UInt32; begin SDL_BlitSurface(param^.imgFond, NIL, param^.scr, NIL); SDL_Flip(param^.scr); result := intervalle; end; procedure cgraphiques.activeTimer(); var par : timerParam; begin par^.scr := scr; // Attribut de la classe cgaphiques par^.imgFond := imgFond; // Idem timerId := SDL_AddTimer(FPS, @actualise, par); end;
L'erreur que me retourne Lazarus : Illegal qualifier sur la ligne SDL_BlitSurface(param^.imgFond, NIL, param^.scr, NIL); : apparemment, c'est le param^.imgFond que j'utilise mal...
Merci d'avance !
Partager