Historique des modifications - Message

Message #4955

Sujet: Déplacer une GUIIMAGE avec la souris


Type Date Auteur Contenu
Dernière modification 21-11-2008 09:20:52 Dragonblood
Merci de ton aide ce que tu dit est juste mais mon prob ne ce situé pas a ce niveau la. J'explique:

la méthode move que j'utilisais n'étais pas bonne car move fait bouger constamment mon GUIIMAGE ce qui au bout d'un moment le fais déplacer a des coordonnées astronomique. A la place j'utilise setRelativePosition qui comme son nom l'indique envoie ma GUIIMAGE à une position RELATIVE de l'écran (en opposition avec Absolue)

donc il me fallait récupérer la position RELATIVE du curseur, la position RELATIVE du GUIMAGE. Soustraire le premier par le deuxieme ( ca c'est ce que tu m'a suggeré pspmy mais que je savais deja seulement j'utilisais des valeurs absolue et la méthode move au lieu de Set RelativePosition donc ca ne marché pas)


Maintenant que j'ai corrigé ca marche meme si il y a un leger décalage (de quelques pixel) entre le moment ou je clique et le moment ou je commence a déplacer ma GUIIMAGE

Donc voila une partie de mon code si ca interresse:

// ICi on teste si le curseur survole la GUI mais il faut aussi quelle soit visible d'ou le "_guiElement->isVisible()==true" en fin de ligne
if ( _curseurPosition.X >=  guiPosition.X and _curseurPosition.X<=guiCoinInferieurDroit.X and _curseurPosition.Y >= guiPosition.Y and _curseurPosition.Y<=guiCoinInferieurDroit.Y and _guiElement->isVisible()==true)
    {

            // si on clique et qu'on bouge alors que le curseur survole alors la fenetre devient deplacable
            if  (Mousedown==1 and CI_event.MouseInput.Event== EMIE_MOUSE_MOVED )
            {


                if (deplacable==0)
                {
                p_ClickOffsetX= (_curseurPosition.X) -guiPosition.X;  // les variable p_ClickOffsetX et p_ClickOffsetY permet d'éviter le décalage lorsque je déplacerais la GUIIMAGE 
                p_ClickOffsetY= (_curseurPosition.Y) -guiPosition.Y;
                deplacable=1;
                }

             
             _guiElement->setRelativePosition ( rect< f32 > (_curseurRelativePosition.X-(p_ClickOffsetX/1000),_curseurRelativePosition.Y-(p_ClickOffsetY/1000),(_curseurRelativePosition.X-(p_ClickOffsetX/1000))+0.411,(_curseurRelativePosition.Y-(p_ClickOffsetY/1000 ))+0.660));
 


            }
Création du message 21-11-2008 09:15:29 Dragonblood
Merci de ton aide ce que tu dit est juste mais mon prob ne ce situé pas a ce niveau la. J'explique:

la méthode move que j'utilisais n'étais pas bonne car move fait bouger constamment mon GUIIMAGE ce qui au bout d'un moment le fais déplacer a des coordonnées astronomique. A la place j'utilise setRelativePosition qui comme son nom l'indique envoie ma GUIIMAGE à une position RELATIVE de l'écran (en opposition avec Absolue)

donc il me fallait récupérer la position RELATIVE du curseur, la position RELATIVE du GUIMAGE. Soustraire le premier par le deuxieme ( ca c'est ce que tu m'a suggeré pspmy mais que je savais deja seulement j'utilisais des valeurs absolue et la méthode move au lieu de Set RelativePosition donc ca ne marché pas)


Maintenant que j'ai corrigé ca marche meme si il y a un leger décalage (de quelques pixel) entre le moment ou je clique et le moment ou je commence a déplacer ma GUIIMAGE

Donc voila une partie de mon code si ca interresse:

// ICi on teste si le curseur survole la GUI mais il faut aussi quelle soit visible d'ou le "_guiElement->isVisible()==true" en fin de ligne
if ( _curseurPosition.X >=  guiPosition.X and _curseurPosition.X<=guiCoinInferieurDroit.X and _curseurPosition.Y >= guiPosition.Y and _curseurPosition.Y<=guiCoinInferieurDroit.Y and _guiElement->isVisible()==true)
    {

            // si on clique et qu'on bouge alors que le curseur survole alors la fenetre devient deplacable
            if  (Mousedown==1 and CI_event.MouseInput.Event== EMIE_MOUSE_MOVED )
            {


                if (deplacable==0)
                {
                p_ClickOffsetX= (_curseurPosition.X) -guiPosition.X;  // les variable p_ClickOffsetX et p_ClickOffsetY permet d'éviter le décalage lorsque je déplacerais la GUIIMAGE 
                p_ClickOffsetY= (_curseurPosition.Y) -guiPosition.Y;
                deplacable=1;
                }

             
             _guiElement->setRelativePosition ( rect< f32 > (_curseurRelativePosition.X-(p_ClickOffsetX/1000),_curseurRelativePosition.Y-(p_ClickOffsetY/1000),(_curseurRelativePosition.X-(p_ClickOffsetX/1000))+0.411,(_curseurRelativePosition.Y-(p_ClickOffsetY/1000 ))+0.660));
 


            }

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
145 invités en ligne
membre en ligne: -
RSS Feed