3D-Grafik Bewegung mit der Maus ohne Klicken

Martin591995

Mitglied
Meine Frage: Kann ich den Viewpoint mit der Bewegung der Maus verändern, ohne dass ich diese geklickt halte?
 
Zuletzt bearbeitet von einem Moderator:
Wenn du den Viewport eines Scrollpanes oder sowas meinst: Klar. Musst dir halt etwas mit den Methoden [c]MouseListener.mouseEntered()[/c] und [c]MouseMotionListener.mouseMoved()[/c] zusammenbasteln.
 
Bewegung der Maus messen -> Spielwelt um den Wert verschieben.
Egal, was du nun genau verschiebst, und wenn es der Viewport ist, dann ist er das eben. ?
 
Ok, dass hatte ich auch schon probiert. Ich habe mir eine Klasse erstellt, in der ich den MouseMotionListner und den KeyListner implementiert habe.
Der KeyListner funktioniert soweit ....
Doch der MouseMotionListner macht noch probleme!
Als ich nähmlich in den Anfängen stand:
Java:
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		System.out.println(e.getPoint());
	}

teilte er mir nur den ersten Punkt und danach keinen mehr mit?!
Woran könnte das liegen?
 
Das ganze wird bei jeder Mausbewegung mit der aktuellen Positon aufgerufen, d.h. es sollte möglich sein, die Bewegung der Events zu berechnen.
Alte Position - Neue Position
 
Ich glaube wir reden grad aneinander vorbei!!! 😳
Ich lass mir einfach immer mit der Methode mouseMoved(MouseEvent e) die aktuelle Position in die Konsole schreiben. Das müsste eigentlich ja funktionieren, doch es gibt nur den ersten Punkt aus und da nach keinen mehr ...
 
Mein Programm:

Java:
import java.awt.GraphicsConfiguration;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;

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

public class Welt extends JFrame {

	public Welt (String title) {
                super(title);
                
                

                // AnzeigeInfos holen (Farbtiefe, usw...
                GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

                // ein neues Canvas mit den AnzeigeInfos erzeugen und dem Frame hinzufügen
                Canvas3D canvas3d = new Canvas3D (config);
                canvas3d.addMouseMotionListener(new MouseMotionListener() {
					
					@Override
					public void mouseMoved(MouseEvent e) {
						// TODO Auto-generated method stub
						System.out.println(e.getPoint());
					}
					
					@Override
					public void mouseDragged(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
				});
                add(canvas3d);
                

                // ein neues Universum im Canvas erzeugen und eine Betrachtungsebene erzeugen
                SimpleUniverse universe = new SimpleUniverse(canvas3d);
                universe.getViewingPlatform().setNominalViewingTransform();

                // ein kleiner Würfel
                ColorCube colorcube = new ColorCube();

                // neue Transform Informationen
                Transform3D transform3d = new Transform3D();

                // neue Transformgruppe
                TransformGroup transroot = new TransformGroup(transform3d);

                //colorcube an Transformgruppe hängen
                transroot.addChild(colorcube);

                //neue Branchgruppe
                BranchGroup branchgroup = new BranchGroup();

                //Transformgruppe an Branchgruppe hängen
                branchgroup.addChild(transroot);
                // ... an das Universum hängen
                universe.addBranchGraph(branchgroup);
                
        }

	public static void main(String args[]) {
		Welt beispiel = new Welt("Beispiel");
		beispiel.setSize(600, 400);
		beispiel.setVisible(true);
	}
}

hab jetzt auch den Fehler gefunden: Ich muss den MouseMotionListener zum Canvas3D nicht zur JFrame adden!!! :toll:

Trotzdem danke für deine schnellen Antworten, die mich dazu veranlagten, noch einmal genauer hinzuschauen
 

Neue Themen


Zurück
Oben