Bild schieben via Drag 'n Drop ist zu schnell!

Status
Nicht offen für weitere Antworten.

newnoise

Mitglied
Hallo,

nachdem ich nun die Basics einigermaßen verstanden habe, gehts los 🙂
Und gleich tritt wieder ein Problem auf 🙂
Zu sehen hier:
KLICK
Das Bild zieht sich viel zu schnell. Merkt ihr wahrscheinlich.

Aber ich finde partout den Haken in meinem Code nicht:

Java:
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.awt.event.*;

public class Map extends Applet implements MouseListener, MouseMotionListener
{
     Image my_gif;
     URL base;
     MediaTracker mt;
     
     int xposdiff = 0;
     int yposdiff = 0;
     int xpos = 0;
     int ypos = 0;
     int mousesposx;
     int mousesposy;

     Boolean mousedown = false;

     public void init()
     {
  		  addMouseListener(this);
  		  addMouseMotionListener(this);

          mt = new MediaTracker(this);

         try {

               base = getDocumentBase();
         }
         catch (Exception e) {}

          my_gif = getImage(base,"pics/1/im0_0.png");
          mt.addImage(my_gif,1);

         try {
               mt.waitForAll();
          }
          catch (InterruptedException  e) {  }

 
     }

     public void paint(Graphics g)
     {
          g.drawImage(my_gif,xpos,ypos,this);
     }

     public void mouseDragged(MouseEvent me)
	 {
		    int deltax = mousesposx - me.getX();
		 	int deltay = mousesposy - me.getY();

		 	xpos -= deltax;
		 	ypos -= deltay;
	        repaint();
		 }

	 public void mousePressed(MouseEvent me)
	 {
		 	 mousesposx = me.getX();
		 	 mousesposy = me.getY();
	 }

	 public void mouseReleased(MouseEvent me)
	 {}
     public void mouseMove(MouseEvent me)
     {}
	 public void mouseExited(MouseEvent me)
	 {}
	 public void mouseEntered(MouseEvent me)
	 {}
	 public void mouseClicked(MouseEvent me)
	 {}
	 public void mouseMoved(MouseEvent me)
	 {}
}

Vielen, vielen Dank!
 
Java:
int deltax = mousesposx - me.getX();
int deltay = mousesposy - me.getY();

xpos -= deltax;
ypos -= deltay;
repaint();

Wieso machst Du nicht einfach:

Java:
xpos = me.getX();
ypos = me.getY();
repaint();

Das sollte doch das Problem beheben, oder nicht?

Du kannst ja dann noch die Bildgröße durch 2 Teilen, sodass Du das Bild in der Mitte verschiebst o.ä. ...
 
na das hatte ich erst, dann springt das bild aber halt immer zum cursor.
habs nun aber hinbekommen.
danke!




gibt aber nen weiteres problem.
der flackert nun immer so beim scrollen. kriegt man das irgendwie weg?

danke!
 
Das flackern kommt durch die update() Methode.

Die löscht beim Aufruf den Background und ruft dann die paint() auf. Somit wird bei einer Änderung ständig repaint() aufgerufen was wiederum zum update() führt.

Das Flackern ensteht also durch das ständige löschen und neuzeichnen.

Lösung:

update() Methode überschreiben mit dem Ziel die paint() Methode direkt aufrufen zu können (damit der Background nicht immer gelöscht wird)

Grüße
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben