Historique des modifications - Message

Message #4986

Sujet: Déplacer une GUIIMAGE avec la souris


Type Date Auteur Contenu
Création du message 23-11-2008 08:03:43 Dragonblood
le decalage et du a la représentation graphique du curseur

pas du tout. La représentation graphique du curseur n'y est pour rien puisque sa position sur l'écran est défini par la pointe de sa fleche. En fait j'ai trouvé pourquoi :

je donnais à setRelativePosition la position relative du curseur en x et y (ca c'est correct) et les variables p_ClickOffsetX et p_ClickOffsetY qui ont des valeurs absolue lorsque je l'ai créé et que je converti en valeur relative en divisant par 1000 (et ca c'est pas bon. Ne pas faire). Ce qui au final me donne ue valeur arrondie de p_ClickOffsetX et p_ClickOffsetY et non plus une valeur exact si j'avais directement une valeur relative. Bon c chaud à comprendre lol mais le truc c'est qu'il faut evité de jouer avec les valeurs absolue et relative, d'essayer de les convertir, etc. Ca donne des approximation. Et le décalage que j'avais precédement s'accentué lorsque j'augmentait la taille de mon device (la fenetre de l'application).

Au final c'est bien la méthode move qu'il fallait utilisé (lol) qui n'attends que des valeurs absolue (donc je n'ai rien a convertir c'est plus simple). Voila le code modifié

// si le curseur bouge ben ma gui Bouge
if (CI_event.MouseInput.Event== EMIE_MOUSE_MOVED )
              {
                    if (deplacable==0)
                    {
                        p_ClickOffsetX= _curseurPosition.X -guiPosition.X;  // pour éviter le décalage
                        p_ClickOffsetY= _curseurPosition.Y -guiPosition.Y;


                        deplacable=1;

                    }

                   _guiElement->move  (position2d< s32 >((_curseurPosition.X -p_ClickOffsetX)-guiPosition.X,(_curseurPosition.Y -p_ClickOffsetY)-guiPosition.Y));

              }

Comme je l'ai dit un peu plus haut move entraine un mouvement constant donc pour éviter que mon image ne parte à l'infinie je soustrait sa futur position à savoir (_curseurPosition.X -p_ClickOffsetX) en x et (_curseurPosition.Y -p_ClickOffsetY) en y par sa position actuel à savoir guiPosition.X en x et guiPosition.Y en y.

Et la ca marche impec, il n'y a plus aucun décalage et je peux déplacer précisement ma GUI et meme en changeant la taille du device.

++

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
105 invités en ligne
membre en ligne: -
RSS Feed