Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Подвигать мышкой обьект


Автор: America 9.12.2006, 18:17
Не получается подвигать мышкой куб.  Пытаюсь придципить события мышки к ротаторам, которые поворачиваю обьект, не получается smile Хэлп.
Код

import java.awt.*;
import java.awt.event.*;

import javax.media.j3d.Appearance;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Geometry;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Alpha;
import javax.swing.JFrame;

import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;


public class mover extends Component 
implements MouseListener, MouseMotionListener{    
    public int mouseX=0, mouseY=0;
    int k=0;
    
    int Getk(){
        return k;
    }
    
    public mover()
        {    
           addMouseListener(this);
           addMouseMotionListener(this);
            

           SimpleUniverse universe = new SimpleUniverse();

           BranchGroup group = new BranchGroup();
           Transform3D rotateX=new Transform3D();
           Transform3D rotateY=new Transform3D();
           Transform3D rotateZ=new Transform3D();
           
        /*   
           rotateX.rotX(Math.PI/(Math.abs(mouseX-350))/50);
           rotateY.rotY(Math.PI/7);
           rotateZ.rotZ(Math.PI/4);
         */
           rotateX.mul(rotateZ,rotateY);
           TransformGroup TG= new TransformGroup(rotateX);
           TG.setCapability(
                   TransformGroup.ALLOW_TRANSFORM_WRITE);
          
          
           
          Alpha alpha=new Alpha(Getk(),20000);
           RotationInterpolator rot= 
               new RotationInterpolator(alpha,TG);
           BoundingSphere bounds=new BoundingSphere();
           rot.setSchedulingBounds(bounds);
           TG.addChild(rot);
          
        
           TG.addChild(new ColorCube(0.3));
           group.addChild(TG);
              

           universe.getViewingPlatform().setNominalViewingTransform();

           universe.addBranchGraph(group);
        }//end of constructor;

    
    
    public void mouseEntered(MouseEvent me){
        mouseX=me.getX();
        mouseY=me.getY();
        k=1;
        repaint();
    }
    
    public void mouseExited(MouseEvent me){
        mouseX=0;
        mouseY=10;
        k=-1;
        repaint();
    }
    
    public void mousePressed(MouseEvent me){
        mouseX=me.getX();
        mouseY=me.getY();        
        k=1;
        repaint();
    }
    
    public void mouseReleased(MouseEvent me){
        mouseX=me.getX();
        mouseY=me.getY();
        k=-1;
        repaint();
        
    }
    
    public void mouseDragged(MouseEvent me){
        mouseX= me.getX();
        mouseY= me.getY();    
        repaint();    
    }
    
    public void mouseMoved(MouseEvent me){    
    }
    
    public void paint(Graphics g){
             
    }
    
public static void main(String[] args)
    {
        Component f=new mover();
        f.setSize(600+150,600);
        f.show();
        
    }



public void mouseClicked(MouseEvent me) {
    // TODO Auto-generated method stub
    
   }


    
    
}//end class

Автор: America 10.12.2006, 13:56
 smile Всем спасибо. Ответ нашёл. Может кому понадобится.
Код

import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.Transform3D;

import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.geometry.ColorCube;

import com.sun.j3d.utils.geometry.*;
import javax.vecmath.*;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.TriangleFanArray;
import javax.media.j3d.Geometry;
import javax.media.j3d.Appearance;
import javax.media.j3d.Shape3D;

public class abc {
public abc()
{
    BoundingSphere bounds= new BoundingSphere(new 
            Point3d(0.0, 0.0,0.0), 100.0);
    SimpleUniverse universe = new SimpleUniverse();

       BranchGroup group = new BranchGroup();
       Transform3D rotateX=new Transform3D();
       Transform3D rotateY=new Transform3D();
       Transform3D rotateZ=new Transform3D();
       
    
       rotateX.rotX(Math.PI/8);
       rotateY.rotY(Math.PI/9);
       rotateZ.rotZ(Math.PI/4);
     
       rotateX.mul(rotateZ,rotateY);
       TransformGroup TG= new TransformGroup(rotateX);
       
          
       ColorCube shape=new ColorCube(0.3);
       
       TG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
       TG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
       MouseRotate mouseSpin = new MouseRotate();
       mouseSpin.setTransformGroup(TG);
       mouseSpin.setSchedulingBounds(bounds);
       
       TG.addChild(shape);
       group.addChild(TG);
       group.addChild(mouseSpin);
       universe.getViewingPlatform().setNominalViewingTransform();
       universe.addBranchGraph(group);

}

public static void main( String[] args ) {

   new abc();

}

} // end of the program

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)