K
kjel
Gast
Hi, ich hoffe mal dass ich ich richtigen Forum bin und frag mal frech drauflos 
Wir müssen für unser Semesterprojekt eine Java GUI bauen, auf der eine kleine animation abläuft. Meine wenigkeit hat im projekt den teil der animation abbekommen. ich hab inzwischen einiges getan und versucht, stoß aber immer wieder auf das gleiche problem, dass die animation verzieht und flimmert... ich kriegs atm iwie nich auf die reihe, ich hoffe ihr könnt mir weiterhelfen :/
Doppelbuffern wäre wahrscheinlich ne Lösung, aber ich hab keine ahnung ob sich das dann mit der tatsache verträgt dass die ani auf der GUI läuft und nich auf nem extra Frame etc.. häng da atm echt..
Der Code oben is noch n bissel unschön (leerer Catch block z.b.) aber ich hoffe ihr könnt mir damit evtl helfen
Dank euch schonmal im vorraus
Wir müssen für unser Semesterprojekt eine Java GUI bauen, auf der eine kleine animation abläuft. Meine wenigkeit hat im projekt den teil der animation abbekommen. ich hab inzwischen einiges getan und versucht, stoß aber immer wieder auf das gleiche problem, dass die animation verzieht und flimmert... ich kriegs atm iwie nich auf die reihe, ich hoffe ihr könnt mir weiterhelfen :/
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.Image;
import java.awt.geom.*;
class Animation extends Frame implements Runnable
{
Image bild;
Thread MeinThread;
double xpos = 10.0;
double ypos = 10.0;
AffineTransform at1;
public void run()
{
while(true)
{
xpos++;
ypos++;
try
{
Thread.sleep(200);
}
catch (InterruptedException e)
{
}
}
}
public Animation()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
bild = java.awt.Toolkit.getDefaultToolkit().createImage("image.gif");
}
public static void main(String args[])
{
System.out.println("Starting Animation...");
Animation mainFrame = new Animation();
mainFrame.setSize(400, 400);
mainFrame.setTitle("Animation");
mainFrame.setVisible(true);
}
public void paint(Graphics g)
{
for(int i = 0; i< 500; i++)
{
ypos = ypos+i;
Graphics2D g2d = (Graphics2D) g;
at1 = new AffineTransform();
at1.setToTranslation(xpos,ypos);
g2d.setComposite(
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(bild, at1, this);
ypos = 10.0;
}
repaint();
}
}
Doppelbuffern wäre wahrscheinlich ne Lösung, aber ich hab keine ahnung ob sich das dann mit der tatsache verträgt dass die ani auf der GUI läuft und nich auf nem extra Frame etc.. häng da atm echt..
Der Code oben is noch n bissel unschön (leerer Catch block z.b.) aber ich hoffe ihr könnt mir damit evtl helfen
Dank euch schonmal im vorraus