dans ta fonction init, tu céclares un SDL_Event :
mais si tu ne récupères pas les coordonnées de la souris le event.x contient une information indéterminée
Code : Sélectionner tout - Visualiser dans une fenêtre à part SDL_Event event;
dans ta fonction init, tu céclares un SDL_Event :
mais si tu ne récupères pas les coordonnées de la souris le event.x contient une information indéterminée
Code : Sélectionner tout - Visualiser dans une fenêtre à part SDL_Event event;
je serais donc oblige de la stocker dans une variable ? il n'y aurais pas une autre solution ?
Ca ne marche pas non plus.int i;
SDL_Rect positionCurseur;
positionCurseur.x = event.motion.x;
positionCurseur.y = event.motion.y;
for (i=0 ; i<8; i++)
{
positionCurseur.x = event.motion.x;
positionCurseur.y = event.motion.y;
if(Menu:etection_Item(positionCurseur.x, positionCurseur.y, Proprietes_Item_Menu[i]))
{
menu[i] = TTF_RenderText_Blended(Font_menu, "Libelle_Menu[i]", Color_menu_over);
}
else
menu[i] = TTF_RenderText_Blended(Font_menu, "Libelle_Menu[i]", Color_menu);
Proprietes_Item_Menu[i].h = menu[i]->w;
Proprietes_Item_Menu[i].w = menu[i]->h;
Proprietes_Item_Menu[i].x = (LargeurEcran/2);
Proprietes_Item_Menu[i].y = (HauteurEcran/9)*(i+1);
}
return true;
}
Il y a deux solutions possibles :
- A chaque affichage, tu vérifies la position de la souris et tu décides entre les images des boutons possibles.
- Lors du mouvement de la souris tu mets à jour les états des boutons.
Ta solution n'a aucun sens puisque tu ne prends pas en compte la position courante de la souris.
Jc
a bon, je voyais les choses comme cela:
A chaque fois que je veux afficher un item, je recupere la position de la souris et verifie si elle se place bien dans celui-ci.
C'est donc la première solution que je propose.Envoyé par kirua_sama
Par contre, dans ton code, c'est pas du tout ce que tu fais puisque tu récupéres la position de la souris que pendant l'initialisation du menu.
Jc
je n'ai vu nul part dans le code que la position de la souris était récupérée
il y a une fonction SDL qui sert à récupérer les coordonnées de la souris : SDL_GetMouseState
http://www.libsdl.org/cgi/docwiki.cg...fGetMouseState
parceque ce que tu ne sembles pas comprendre c'est qu'en faisant
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 int i, mouseX, mouseY; SDL_GetMouseState(&mouseX, &mouseY); for (i=0 ; i<8; i++) { if(Menu:etection_Item(mouseX, mouseY, Proprietes_Item_Menu[i])) { menu[i] = TTF_RenderText_Blended(Font_menu, "Libelle_Menu[i]", Color_menu_over); } else menu[i] = TTF_RenderText_Blended(Font_menu, "Libelle_Menu[i]", Color_menu); Proprietes_Item_Menu[i].h = menu[i]->w; Proprietes_Item_Menu[i].w = menu[i]->h; Proprietes_Item_Menu[i].x = (LargeurEcran/2); Proprietes_Item_Menu[i].y = (HauteurEcran/9)*(i+1); } return true; }
ton event contient la même chose que i dans le cas suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SDL_Event event;
c'est à dire une valeur inconnue
Code : Sélectionner tout - Visualiser dans une fenêtre à part int i;
je ne sais pas comment te l'expliquer autrement mais ta façon d'utiliser event c'est comme si tu faisais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int i; if(i == 3) FaireUnTruc();
aussi une autre chose :
Libelle_Menu[i] ne devrait pas être entre parenthèses
Code : Sélectionner tout - Visualiser dans une fenêtre à part TTF_RenderText_Blended(Font_menu, "Libelle_Menu[i]", ...
D'accord merci, je vais essayer vos solution je croyais que en fesant Event,
et PositionCurseur.x = event.motion.x ca marchais, désolé...
Sinon pour le libelle menu: je l'ai mis entre guillement parce que ca me fait bugger mon programme lorsque je passe directement Libelle_Menu[i]. Merci encore, je vous tiens au courant.
Ca fonctionne !! Merci beaucoup ^^ depuis le temps que ca me saoule... ^^ j'ai du apprendre la SDL sur des mauvais Tutos ... ou c'est ptete juste moi qui ai pas asser approfondi.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager