Polygon bewegt sich nach mehreren aufrufen immer schneller

Status
Nicht offen für weitere Antworten.
S

silvoo

Gast
Hallo,

habe folgens Problem.

Habe ein Tool geschrieben, dass Rechteck- und Polygonzeichnung als Funktion hat.
Die vorhandenen Objekte werden für Rechtecke und Polygone in zwei XML-Dateien festgehalten. Wenn das Tool neugestartet wird, werden, wenn vorhanden, die Objekte(Rechtecke oder Polygone) angezeigt. Wenn eine der beiden Funktionen aufgerufen wird, wird die andere auf null gesetzt. Beim nächsten Aufruf wird dann ein neues Objekt der Funktion erstellt. Soweit ist auch alles in Ordnung.

Beim ersten Aufruf der beiden Funktionen läuft alles wie gewünscht. Nur bei der Polygon-Funktion habe das folgende Problem.

Die Bewegungen der Polygone über die Maus werden nach mehrmaligem switchen der Funktionen immer schneller, was ich mir nicht erklären kann. Wie oben erwähnt, wird die deaktivierte Funktion immer auf null gesetzt und dann bei Bedarf ein neues Objekt erstellt. Deswegen müsste es nicht an den Startwerten liegen.

Code:
public void mouseMoved(MouseEvent e) {                                
   if (zF.isPolyMarkierung()) {
                
         // Positionsaenderung
            if(ZeichenFlaeche.showedPolyElements.size() != 0) {
             for(int i = 0; i < ZeichenFlaeche.showedPolyElements.size(); i++) {
                p = ZeichenFlaeche.showedPolyElements.get(i);       
                orgP = ZeichenFlaeche.orgPolyElements.get(i);
                                          
                // Polyon verschieben
                if (p.contains(e.getPoint())
                    && zeigeDynLinie == false ) {                       
                                                  
                   zF.setCursor(new Cursor(13));
                  
                   Point point = e.getPoint();
                   start = point;               
                                             
                   bewegePolygon = true;
                   veraendern = true;
                                         
                   break;
                } else {
                    bewegePolygon = false;
                }
          }
       }
   }
}

public void mouseDragged(MouseEvent e) {
       
    if (zF.isPolyMarkierung()) {
                               
      // Polygon verschieben
      if (bewegePolygon && e.isMetaDown() == false) {                                                                     
        Point end = e.getPoint();
               
        int x = end.x - start.x;
        int y = end.y - start.y;
               
        p.translate(x, y);
                                  
        p.invalidate();
                                  
        start = end;       
                                  
   }

Bitte um Hilfe,

silvoo
 

Marco13

Top Contributor
Nee, bitte nicht sowas...
zF.setCursor(new Cursor(13));

Ansonsten...

Code:
int x = end.x - start.x;
int y = end.y - start.y;

System.out.println("start "+start);
System.out.println("end "+end);
System.out.println("move "+x+" "+y);

p.translate(x, y);
hilft vielleicht...
 
G

Guest

Gast
Hi,

ich möchte, dass beim Skalieren die Objekte nicht mehr als eine Minimumgröße runterskaliert werden. Habe den folgen Code für Polygonskalierung :

Code:
else if (scale) {
 Rectangle oldRect = p.getRect();
 zF.setPolyRect(p.getBounds());
 Rectangle newRect = zF.getPolyRect();
 scaleStartPoint = e.getPoint();
                                  
 currentRectWidth = (int) (zF.getPolyRect().getMaxX()-10);
 currentRectHeight = (int) zF.getPolyRect().getMaxY()-10;
 currentRectX = zF.getPolyRect().x+10;
 currentRectY = zF.getPolyRect().y+10;
                        
 zF.setZeigePolyRect(true);
                                  
 // Skalieren von der oberen Ecke links
 if (aendereObenLinks
     && e.isMetaDown() == false) {                   
                                     
  int x = zF.getPolyRect().x - (last_x + e.getX());
  int y = zF.getPolyRect().y - (last_y + e.getY());
                           
  if (!(scaleStartPoint.x > currentRectWidth)
     && !(scaleStartPoint.y > currentRectHeight)) {
       
    newRect.setRect(last_x + e.getX(), last_y + e.getY(),
                  zF.getPolyRect().width + x,
                  zF.getPolyRect().height + y);
  }
  neuePolyKoorZuweisen(oldRect, newRect);

  p.invalidate();
  saveScaledPoly = true;
}

Das Polygon soll in x und/oder y Richtung nicht weniger als 10 px runterskaliert werden, aber größer schon..

Der o.a. Code Code tut folgendes :

Wenn ich Skalieren möchte, werden von dem jeweiligen Polygon ein Copy erstellt, auf dieses die Skalierung ausgeführt wird. Wenn die Maustaste losgelassen wird, wird die Copy dem Originalpolygon zugewiesen.

Wenn die Minimumgrenze beim Skalieren unterschritten wird, wir das Polygon in der Ursprungsgröße angezeigt, wobei es eigentlich einfach in der Minimumgröße zu sehen sein sollte. Sobald man es aber vom minimum aus wieder größer skaliert, ohne die Maus loszulassen, nimmt das Polygon die richtige Skalierungsgröße wieder an.



Was ist verkehrt am Code??
 
G

Guest

Gast
Die Lösung des ersten Problems war das Entfernen der Listener. Beim neuen Aufruf werden sie wieder hinzugefügt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Polygon Kollisionsabfrage Spiele- und Multimedia-Programmierung 2
S Kollisionsabfrage zwischen Rechteck und Polygon Spiele- und Multimedia-Programmierung 1
O Kollision Polygon und Rechteck Spiele- und Multimedia-Programmierung 2
S 3D-Polygon Spiele- und Multimedia-Programmierung 5
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
R JOGL polygon smooth Spiele- und Multimedia-Programmierung 20
X Polygon in Graphics2D löschen Spiele- und Multimedia-Programmierung 4
R Polygon um double x/y - Werte verschieben Spiele- und Multimedia-Programmierung 2
G Eine Art Polygon Spiele- und Multimedia-Programmierung 5
G Polygon mittels der Klasse PathIterator Koordinateneckpunkte Spiele- und Multimedia-Programmierung 1
chik Wie arbeitet die polygon.contains Methode in Java Spiele- und Multimedia-Programmierung 4
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
P Sich bewegende Kamera Spiele- und Multimedia-Programmierung 12
I Wo befindet sich ein Punkt? Spiele- und Multimedia-Programmierung 6
R Game Loop verhält sich eigenartig Spiele- und Multimedia-Programmierung 1
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
S Animation zieht "Spur" hinter sich her Spiele- und Multimedia-Programmierung 2
M Bildschirmgröße ändert sich Spiele- und Multimedia-Programmierung 10
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5
J Java3D - Farben vermischen sich Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
CookieSoft 3D Würfel will sich nicht drehen! [LWJGL] Spiele- und Multimedia-Programmierung 2
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
J Pufferproblem bei sich wiederholenden MouseEvents Spiele- und Multimedia-Programmierung 4
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
S Programm hängt sich auf wenn Lied abspielt Spiele- und Multimedia-Programmierung 4
W 2 Bälle, die sich abstoßen Spiele- und Multimedia-Programmierung 24
F RPG - Spielfigur soll sich nicht frei bewegen können. Anregugen wären gerne gesehen^^ Spiele- und Multimedia-Programmierung 13
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
P JFileChooser öffnet sich drei mal Spiele- und Multimedia-Programmierung 4
Dragonfire Java Sound API - Lautstärke ändert sich nicht Spiele- und Multimedia-Programmierung 2
H Jogl-Animator - Inhalt ändert sich nicht Spiele- und Multimedia-Programmierung 4
M Sich nach links verschiebendes Bild Spiele- und Multimedia-Programmierung 2
L Figur soll sich selbständig Bewegen Spiele- und Multimedia-Programmierung 12
B Bounds drehen sich nicht mit.... Spiele- und Multimedia-Programmierung 7
R Eignet sich Java für ein Beat'em'Up? Spiele- und Multimedia-Programmierung 3
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben