Bonjour,
Je développe une IHM en C++ en utilisant les librairies Ogre et CEGUI.
Je désire créer un dock (un panel conteneur qui est composé d'un panel de stats et d'un panel de réaction avec la souris).
Quand le panel de stats est caché, un clic sur le panel souris permet d'ouvrir le panel de stats, un nouveau clic sur le panel souris permet de cacher le panel stats.
Voici le code que j'utilise :
Au départ, le conteneur principal (win) est à la position -0.27 (le conteneur stats est caché). Pour afficher les stats, il faut positionner win à 0.
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 foldDock(win, win_stats, 0); void foldDock(CEGUI::Window* win, CEGUI::Window* win_stats, float max) { if(!win_stats->getProperty("Visible").compare("False")) win_stats->setProperty("Visible", "True"); //recuperer la position X courante du dock conteneur CEGUI::UDim ud = win->getXPosition(); float pos_x = ud.d_scale; while(pos_x != max) { char c_pos[4]; if(pos_x > max) pos_x -= 0.01; else pos_x += 0.01; //arrondir a 2 chiffres apres la virgule (probleme de precision) sprintf(c_pos, "%.2f", pos_x); string s_pos(c_pos); pos_x = atof(c_pos); cout << s_pos << endl; win->setProperty("UnifiedXPosition", "{" + s_pos + ",0}"); sleep(1); } }
Ce code ne réalise pas tout à fait ce que je souhaite. Actuellement, il affiche sur la sortie standard les étapes (de 0.01 en 0.01) toutes les secondes, mais ne met à jour la position du conteneur sur l'interface qu'une fois qu'on est sorti de la boucle.
Ce que j'aimerai faire, c'est découvrir et cacher le panel stats progressivement (et donc à chaque passage de la boucle, et logiquement à chaque appel de setProperty() ), et non pas tout d'un coup.
Partager