JPG Flackerfrei bewegen

Status
Nicht offen für weitere Antworten.

777

Bekanntes Mitglied
Hi Leute,
Das folgende Programm lässt eine Fliege per Zufall über den Bildschirm fliegen. Leider flackert das Bild sehr stark.
Ich habe nun gehört, dass sich das verhindern liese, wenn man einen Buffer einbaut.
Wisst ihr mehr darüber?


Code:
import java.awt.*;
import java.applet.*;

public class Fliege extends java.applet.Applet implements Runnable
{
int posy=1,posx=1,zufall=0,zufall2=0,zufall3=0;
Thread Flieg = null;



public void init()
{

setLayout(null);
setBackground(java.awt.Color.white);
setSize(800,600);

}



public void stop()
{
Flieg.stop();
Thread Flieg = null;

}

public void run()
{
while(true)
{
zufall2= (int)(Math.random()*2+1);
zufall3= (int)(Math.random()*2+1);

if(zufall2==1)
posx++;
if(zufall2==2)
posx--;

if(zufall3==1)
posy++;
if(zufall3==2)
posy--;

zufall = (int)(Math.random()*20);

try
{
Flieg.sleep(zufall);
}
catch(InterruptedException e)
{

}
repaint();
}
}

public void paint(Graphics g)
{
Image fly = getImage(getCodeBase(),"Fliege.jpg");
if(posx<=0)
posx=1;
if(posy<=0)
posy=1;

if(posy>=800)
posy=799;
if(posy>=600)
posy=599;

g.drawImage(fly,posx,posy,this);
}

public void start()
{
Flieg = new Thread(this);
Flieg.start();
}

}
 

ich_wills_wissen

Bekanntes Mitglied
Hi 777,

hab gerade nicht viel Zeit aber vom Prinzip geht das meine ich so:

Du hast 2 Objekte auf denen Du die Fliege malst.
Das erste Objekt zeigst Du und auf dem zweiten malst Du dann das nächste Bild der Fliege (Position leicht verändert).
Wenn das zweite Objekt fertig gemalt ist zeigst Du es und machst dafür das erste unsichtbar.
Auf dem ersten zeichnest Du - bzw Dein Programm - dann das nächste Bild, zeigst es wenn es fertig gemalt ist
und machst wieder das zweite Objekt auf dem Du malst unsichtbar usw.

Hoffe ich habe jetzt nichts falsches erzählt, wenn doch lerne ich gerne dazu.

Gruß,

ich_wills_wissen :###
 

777

Bekanntes Mitglied
Also aus dem, was auf der Seite steht werd ich leider nicht so schlau, weil ich das nicht verstehe.
Ich will ja auch nur das Flackern bei meiner Fliege loswerden. Keine aufwändigen Animationen oder sowas...
Trotzdem danke
 

MPW

Top Contributor
Nimm einfach ein JApplet und ein JPanel und du brauchst dich um nichts mehr kuemmern, nur noch die Fliege verschieben.
 

L-ectron-X

Gesperrter Benutzer
Ja, kann man machen. Nur würde ich das jetzt nicht so pauschalisieren.
Wenn auf dem Zielrechner nur die Microsoft Java-VM installiert ist, wird ein JApplet nicht angezeigt.
Kommt auf das Zielsystem an.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben