Bilder bewegen

Status
Nicht offen für weitere Antworten.

Ataraxie

Mitglied
Ich habe folgende Frage:

Wie kann ich eine Abfolge von Bildern, zum Beispiel eine Laufanimation, schnell über den Bildschirm bewegen?
Bis jetzt werden nach jedem Bild der Animation die Koordinaten De/Inkrementiert.
Aber ich kann ja schlecht die Animation schneller ablaufen lassen, nur damit sich das Bild angemessen schnell bewegt.
 

MPW

Top Contributor
Du koenntest die Pixel um die De/Inkrementiert werden erhoehen, das wird aber ruckeln.

Poste mal deinen Code...eigentlich laeft sowas normaler Weise sehr schnell, bzw. schnell genug.
 

Ataraxie

Mitglied
Kein Problem.
Die Methode paintPenta() ist die Methode in der die Bewegung initialisert wird. Das getMousePosition dient dazu, dass das Gif die Maus verfolgt. leider sehr langsam. Wenn du möchtest kann ich dir auch die .JAR schicken, damit du dir das mal anschauen kannst,

Code:
class Zeichner extends Component{
	Graphics window;
	Graphics doubbleBuffer;
	BufferedImage bufferImage;
	Image bgpic;
	Dimension screenSize;
	Thread zeichnerThread;
	GraphicalEnvironment environment;
	MediaTracker tracker;
	Image penta[];
	ImageIcon prePenta[];
	Zeichner(Graphics g,GraphicalEnvironment ge){
		super();
		window=g;
		environment=ge;
		screenSize=Toolkit.getDefaultToolkit().getScreenSize();
		zeichnerThread=Thread.currentThread();
		tracker=new MediaTracker(this);
		initEnvironment();
		initPictures();
		initBufferImage();
	}
	public void initEnvironment(){
		environment.addMouseListener(
			new MouseListener(){
				public void mouseClicked(MouseEvent e){
					if(e.getButton()==e.BUTTON3)
					System.exit(0);
				}
				public void mouseEntered(MouseEvent e){
				}
				public void mouseExited(MouseEvent e){
				}
				public void mousePressed(MouseEvent e){
				}
				public void mouseReleased(MouseEvent e){
				}
			});
	}
	public void initPictures(){
		bgpic= new ImageIcon(ClassLoader.getSystemResource("image/bgpic.jpg")).getImage();
		this.prepareImage(bgpic, this);
		while (((checkImage(bgpic, this) & ALLBITS)!= ALLBITS)) {
        	try{
           		 // Pause, um dem Ladevorgang keine Ressourcen zu nehmen
         		 zeichnerThread.sleep(5);
         	}
         	catch(InterruptedException e) {
         		e.printStackTrace();
         	}
        }
        //Pentagifs initialisieren, damit es aus einer Jar gestartet werrden kann
       prePenta= new ImageIcon[10];
       for(int i=0;i<prePenta.length;i++){
       	String nr=""+(1+i);
       	prePenta[i]=new ImageIcon(ClassLoader.getSystemResource("image/gif/penta"+nr+".GIF"));
       }
	}
	public void loadTracker(){
		penta= new Image[10];
		// Die Bilder werden einem Image zugewiesen und dem Tracker bekannt gemacht. 
		// Dieser erhält zusätzlich noch eine ID zu jedem Bild
		for(int i=0;i<penta.length;i++){
			penta[i]=prePenta[i].getImage();
			tracker.addImage(penta[i],i);
		}
		// Beim Videoplayer soll nun so lange gewartet werden, bis alle Bilder geladen wurden. 
		// Hierfür definiert die Klasse MediaTracker die Methode waitForID(int id):
		for (int i=0; i < penta.length; i++) {
			try{
				tracker.waitForID(i);
			}
			catch (InterruptedException e){
				System.err.println("Error: "+e);
			}
			// Fehlerüberprüfung
			if(tracker.isErrorID(i)){
				Object[] errors = tracker.getErrorsID(i);
				for(int n=0;n<errors.length;n++)
					System.err.println("Debug: "+errors[n]+" errorslength"+errors.length+"imagenumbr"+i);
			}
		}
	}
	public void paintpenta(){
		loadTracker();
		int x=490, y=300;//Startposition des Gifs
		for(int i=0;i<penta.length;i++) {
		    Point p=environment.getMousePosition();// Mouse Position
		    
		    if(x!=p.x-25)	//Bewegung auf der X-Achse (-25 damit das gif das 50x50 beträgt in zentriert zum stehen kommt)
		    	if(x<p.x-25)
		    		x=x+1;
		    	else
		    		x=x-1;
		    if(y!=p.y-25)	//Bewegung auf der X-Achse
		    	if(y<p.y-25)
		    		y=y+1;
		    	else
		    		y=y-1;
			doubbleBuffer.drawImage(penta[i],x,y,this); // Hier wird jedes einzelne Bild des Gifs gezeichnet
			sleepd(35,0);					// Die 35ms Beeinflussen die abspielgeschwindigkeit des gifs
			up2date();
			if(i==penta.length-1)
				i=0;
		}
	}
	public void initBufferImage()
	{	
		// Initialisierung des DoubleBuffers
		if (bufferImage == null){
			bufferImage = new BufferedImage(screenSize.width,screenSize.height, BufferedImage.TYPE_INT_RGB); 
			doubbleBuffer = bufferImage.getGraphics();
		}
		// Hintergrundbild laden
		doubbleBuffer.drawImage(bgpic,0,0,this);
	}
	public void up2date(){
		// Den Buffer auf den Bildschirmausgeben
		window.drawImage(bufferImage,0,0,this);
		doubbleBuffer.drawImage(bgpic,0,0,this);
	}
	public void sleepd(int i,int x){
		try{
         	 zeichnerThread.sleep(i,x);
         }
         catch(InterruptedException e) {
         	e.printStackTrace();
         }
	}
}
class GraphicalEnvironment extends Frame
{  
	GraphicalEnvironment(){
		super("Testzeichnen");
		this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
		this.setUndecorated(true);
		this.setVisible(true);
	}	
}
	class GraphicalEnvironment extends Frame
{  
	GraphicalEnvironment(){
		super("Testzeichnen");
		this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
		this.setUndecorated(true);
		this.setVisible(true);
	}	
}
public class Starter
{
	GraphicalEnvironment ge;
	Zeichner d;
	Starter(){
		ge = new GraphicalEnvironment();
		d = new Zeichner(ge.getGraphics(),ge);	
	}
	public void start(){
		d.paintpenta();
	}
  	public static void main( String args[] ) throws Exception{
  		Starter t=new Starter();
		t.start();
  	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bilder werden unscharf angezeigt Spiele- und Multimedia-Programmierung 5
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
beatles Minesweeper - keine Bilder Spiele- und Multimedia-Programmierung 3
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
O Bilder senden TV über DLNA? Spiele- und Multimedia-Programmierung 0
T Bilder Elegant darstellen... Spiele- und Multimedia-Programmierung 7
T Bilder einbinden, bzw. ändern Spiele- und Multimedia-Programmierung 5
M Bilder effizient speichern/serialisieren Spiele- und Multimedia-Programmierung 10
M Bilder in Java Spiele- und Multimedia-Programmierung 7
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
B Bilder in GUI ändern ohne repaint() Spiele- und Multimedia-Programmierung 6
T Spielautomat bilder vergleichen Spiele- und Multimedia-Programmierung 34
A Bilder werden nicht geladen Spiele- und Multimedia-Programmierung 6
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
A Bilder (auf JPanels) auf komplette Zellengröße (GridBagLayout) skalieren Spiele- und Multimedia-Programmierung 2
I Bilder aus Quaxli's Tutorial Spiele- und Multimedia-Programmierung 3
A bilder performant und unhässlich skalliert darstellen? Spiele- und Multimedia-Programmierung 10
A 2 Bilder übereinander legen Spiele- und Multimedia-Programmierung 15
J 2D-Bilder in Java3D Spiele- und Multimedia-Programmierung 4
A Bilder(BMP) speichern Spiele- und Multimedia-Programmierung 2
S Bilder zuscheiden - Werte von php übergeben Spiele- und Multimedia-Programmierung 7
D Bilder besser interpolieren Spiele- und Multimedia-Programmierung 4
F Dynamische Bilder erzeugen? Spiele- und Multimedia-Programmierung 7
R Bilder aus animierter .gif extrahieren? Spiele- und Multimedia-Programmierung 4
C jpg.Bilder teilen/bearbeiten für Puzzle Spiele- und Multimedia-Programmierung 7
M Bilder verzerren [Rechteck -> Trapez] Spiele- und Multimedia-Programmierung 4
K Bilder drehen Spiele- und Multimedia-Programmierung 5
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
H Bilder speichern Spiele- und Multimedia-Programmierung 3
A Bilder flackern Spiele- und Multimedia-Programmierung 5
T Gekachelte Bilder darstellen Spiele- und Multimedia-Programmierung 2
Z Schach Figuren bewegen Spiele- und Multimedia-Programmierung 4
B Spieler auf besonderer Bahn bewegen Spiele- und Multimedia-Programmierung 1
M Minecraft Spieler move/run (bewegen) Spiele- und Multimedia-Programmierung 0
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
A Spiel Figur ansprechen und bewegen Spiele- und Multimedia-Programmierung 3
G Auf einem Stick bewegen Spiele- und Multimedia-Programmierung 5
astro151 JButtons mit Mausklicks bewegen Spiele- und Multimedia-Programmierung 2
M bewegen eines Objektes Spiele- und Multimedia-Programmierung 2
L JavaFX Objekte bewegen Spiele- und Multimedia-Programmierung 3
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
O Fehler bei Programmierung lässt Figur nicht bewegen Spiele- und Multimedia-Programmierung 5
javampir Lange Hintergrundgrafik einfügen und bewegen Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
R Canvas Circle bewegen? Spiele- und Multimedia-Programmierung 14
K auf Mapraster frei bewegen Spiele- und Multimedia-Programmierung 7
T Android OpenGL Bewegen Spiele- und Multimedia-Programmierung 5
K Zum Ziel bewegen Spiele- und Multimedia-Programmierung 4
Helgon Große Welt bewegen? Spiele- und Multimedia-Programmierung 15
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
G 2D Welt bewegen Spiele- und Multimedia-Programmierung 20
V Jogl: Objekt trotz Rotation immer in gleiche Richtung bewegen Spiele- und Multimedia-Programmierung 5
M Figur bewegen Spiele- und Multimedia-Programmierung 7
F RPG - Spielfigur soll sich nicht frei bewegen können. Anregugen wären gerne gesehen^^ Spiele- und Multimedia-Programmierung 13
N Objekt entgegengesetzt bewegen Spiele- und Multimedia-Programmierung 8
D Sprite zur Maus bewegen Spiele- und Multimedia-Programmierung 9
S Mehrere Steine gleichzeitig setzen und bewegen Spiele- und Multimedia-Programmierung 4
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
2 Kugel bewegen? Spiele- und Multimedia-Programmierung 17
L Figur soll sich selbständig Bewegen Spiele- und Multimedia-Programmierung 12
G Zeichnung mit der Maus bewegen Spiele- und Multimedia-Programmierung 3
R Teilgraphen bewegen Spiele- und Multimedia-Programmierung 5
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
Z Obejkt drehen & vorwärts bewegen Spiele- und Multimedia-Programmierung 9
D nicht 4-eckiges bild auf Hintergrund bewegen Spiele- und Multimedia-Programmierung 2
G Bewegen von Objekten Spiele- und Multimedia-Programmierung 4
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben