Behavior problème gestion souris molette + deplacement

Behavior problème gestion souris molette + deplacement - Java - Programmation

Marsh Posté le 07-02-2009 à 17:49:32    

Bonjour à tous ,
j'ai un projet pour mon IUT. C'est un programme en java , utilisant Java3D ( donc graphe de scène ) qui permet de visualiser en 3d des données 2d ou autres et je dois m'occuper de la gestion de la souris mais j'ai un problème.
 
En effet,j'arrive à gérer les déplacements de la souris lorsque celle-ci est DRAG , je souhaite aussi gérer la molette par exemple pour un zoom.
Or j'arrive soit à faire les déplacements soit la roulette mais pas les 2 en même temps et je ne trouve pas de solutions.
 
Je colle mon code si jamais quelqu'un voit mon erreur :)
 
Si je remplace (MouseEvent.MOUSE_DRAGGED | MouseEvent.MOUSE_WHEEL); par (MouseEvent.MOUSE_DRAGGED & MouseEvent.MOUSE_WHEEL); j'arrive à avoir la roulette mais plus le deplacement ...
 
 

Code :
  1. class MyMouse extends Behavior{
  2. private TransformGroup         TG;                                                   
  3. private Transform3D             rot         = new Transform3D();                       
  4. private Transform3D             rotation    = new Transform3D();   
  5. private Vector3f                  translation = new Vector3f();                        
  6. private WakeupOnAWTEvent  mouseEvent = new WakeupOnAWTEvent(MouseEvent.MOUSE_DRAGGED | MouseEvent.MOUSE_WHEEL);
  7. private float pasPos =           0.01f;
  8. private float pasNeg =          -0.01f; 
  9. private int mouseXlast,mouseYlast,mouseX,mouseY;
  10. /**Constructeur*/
  11. MyMouse(TransformGroup argTG){   TG=argTG;   }
  12. /** Initialise le Behaviour*/       
  13. public void initialize(){
  14.  /** Activation des criteres de reveil = touche **/
  15.         wakeupOn(mouseEvent);
  16.  setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0)); 
  17. }
  18. /**
  19.  * Methode de traitement de l'action (actionPerformed pour les ActionListener:p)
  20.  */       
  21. public void processStimulus(Enumeration criteria){                                                           
  22.  AWTEvent events[]=mouseEvent.getAWTEvent();
  23.                 rot.setIdentity();
  24.  TG.getTransform(rotation);
  25.   
  26.  if (((MouseEvent)events[0]).getID()==MouseEvent.MOUSE_DRAGGED){ 
  27.    mouseX = ((MouseEvent)events[0]).getX();
  28.    mouseY = ((MouseEvent)events[0]).getY();
  29.   //Gestion de la souris pour Y
  30.   if ( mouseYlast < mouseY )        rot.rotX(pasNeg);
  31.   if ( mouseYlast > mouseY )        rot.rotX(pasPos);
  32.   //Gestion de la souris pour X  
  33.   if ( mouseXlast < mouseX )        rot.rotY(pasNeg);
  34.   if ( mouseXlast > mouseX )        rot.rotY(pasPos);
  35.                 }
  36.  mouseXlast = mouseX;
  37.  mouseYlast = mouseY;
  38.  if (((MouseEvent)events[0]).getID()==MouseEvent.MOUSE_WHEEL){ 
  39.    System.out.println("[informations] Roulette utilisee !" );
  40.  }
  41.  rotation.mul(rot);         
  42.  TG.setTransform(rotation);
  43.  this.wakeupOn(mouseEvent);
  44. }
  45.     }

Reply

Marsh Posté le 07-02-2009 à 17:49:32   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed