FiReTiTi
Messages postés54Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention28 septembre 2007
-
21 déc. 2006 à 10:27
FiReTiTi
Messages postés54Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention28 septembre 2007
-
3 janv. 2007 à 11:36
Bonjour,
je souhaite utiliser la souris pour gérer les rotations d'un objet dans mon application 3D. Pour cela, j'ai besoin des coordonnées du clic au moment où l'on presse le bouton puis des coordonnés du pointeur quand le bouton est enfoncé.
Mais il y a un souci, voilà l'exemple :
[CODE]
public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener
{
private int OldX, OldY ;
...
public void mousePressed(MouseEvent me) // Quand on presse sur le bouton
{
OldX = me.getX() ;
OldY = me.getY() ;
System.out.println("mousePressed Old = " + OldX + " " + OldY + "-------------------------->>>>>>>>>>>>>>>>>>") ;
}
...
public void mouseDragged(MouseEvent me) // Mouvement de la souris bouton enfoncé.
{
System.out.println("mouseDragged : " + me.getX() + " " + me.getY() + " Old = " + OldX + " " + OldY) ;
OldX = me.getX() ;
OldY = me.getY() ;
}
...
}
[\CODE]
Mais entre les deux fonctions, les valeurs de OldX et OldY sont perdues, voilà l'affichage :
[CODE]
mousePressed Old = 558 439-------------------------->>>>>>>>>>>>>>>>>>
mouseDragged : 558 431 Old = 345 324
mouseDragged : 558 424 Old = 558 431
mouseDragged : 557 422 Old = 558 424
[\CODE]
On voit que dans le méthode moussePress les valeurs sont changées, mais dans la méthode mousseDragged elles sont différentes.
Est ce que quelqu'un sait pourquoi ?
Si oui, comment contourner le souci ?
TestSouris frame = new TestSouris();
frame.setSize(300, 300);
frame.setVisible(true);
}
}
n'as tu pas d'autre endroit de ton code qui modifie les valeurs de oldX et oldY ?
essaye d'executer en mode pas a pas pour voir ou est modifiée ta variable
FiReTiTi
Messages postés54Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention28 septembre 2007 22 déc. 2006 à 23:49
Bonsoir,
merci pour l'aide, mais :
- j'ai besoin d'utiliser "public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener" et non pas une JFrame.
- ma classe contient exactement ce que j'ai marqué. Les trois petits points signifient que je n'ai pas marqué les autres fonctions que j'ai été obligé d'implémenter, mais qui sont VIDES.
public void mouseDragged(MouseEvent e) {
dragged(e.getPoint());
}
private void dragged(Point p) {
int X = p.x;
int Y = p.y;
int msgX = 0;
int msgY = 0;
msgX =frame.getX();
msgY = frame.getY();
if (msgX 0 && msgY 0) msgX msgY 1;
int moveX = X - mousePrevX; // Negative if move left
int moveY = Y - mousePrevY; // Negative if move down if (moveX 0 && moveY 0)
return;
mousePrevX = X - moveX;
mousePrevY = Y - moveY;
// mouseDragged caused by setLocation() on frame. if (frameX msgX && frameY msgY) {
frameX = 0;
frameY = 0;
return;
}
// '-' would cause wrong direction for movement.
int newFrameX = msgX + moveX;
// '-' would cause wrong
int newFrameY = msgY + moveY;
frameX = newFrameX;
frameY = newFrameY;
frame.setLocation(newFrameX, newFrameY);
}
public void mouseMoved(MouseEvent e) {
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
WORA
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 2 janv. 2007 à 15:38
Salut et bonne année à tous(et toutes),
pour faire "super.moussePressed()" il te faut hériter de MouseAdapter alors sérieux prend la classe que je te donne texto limite tu bidouille comme tu peux et de la lu la considère comme un objet fini et autonome dans ton application
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."