RauchenderDachs
Cadet 4th Year
- Registriert
- Dez. 2012
- Beiträge
- 70
Hi Leute
Ich hab vollgendes Problem. Ich versuche ein Quadrat auf einer vorgegebenen Route laufen zu lassen. Die Berechnung der neuen Koordinaten funktioniert auch soweit auch das einfügen auf den Background klappt. Allerdings flackert bei mir das Bild extrem. Ich hab schon das doubleBuffering ausprobiert.
Hier mal der Quelltext des GUI :
Und von Creep:
Hoffe ihr könnt mir helfen
MFG RauchenderDachs
Ich hab vollgendes Problem. Ich versuche ein Quadrat auf einer vorgegebenen Route laufen zu lassen. Die Berechnung der neuen Koordinaten funktioniert auch soweit auch das einfügen auf den Background klappt. Allerdings flackert bei mir das Bild extrem. Ich hab schon das doubleBuffering ausprobiert.
Hier mal der Quelltext des GUI :
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package towerdefencev4;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
*/
public class GUI extends JFrame implements Runnable{
/**
* @param args the command line arguments
*/
private Image dbImage;
private Graphics dbGraphics;
private Creep dasCreep= new Creep(40,25,this);
int first = 1;
public GUI(String title){
super(title);
}
public static void main(String[] args) {
GUI dieOberfläche = new GUI("TowerDefencev4");
dieOberfläche.setSize(400,400);
new Thread(dieOberfläche).start();
dieOberfläche.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dieOberfläche.setVisible(true);
}
@Override
public void paint(Graphics gr){
super.paint(gr);
//Hintergrund
gr.drawImage(Toolkit.getDefaultToolkit().getImage("../img/ground.gif"), 0, 0, this);
//Creep
dasCreep.paintcreep(gr);
}
@Override
public void run() {
while(true){
dasCreep.move();
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void update(Graphics g)
{
//Double-Buffer initialisieren
if (dbImage == null) {
dbImage = createImage(
this.getSize().width,
this.getSize().height
);
dbGraphics = dbImage.getGraphics();
}
//Hintergrund löschen
dbGraphics.setColor(getBackground());
dbGraphics.fillRect(
0,
0,
this.getSize().width,
this.getSize().height
);
//Vordergrund zeichnen
dbGraphics.setColor(getForeground());
paint(dbGraphics);
//Offscreen anzeigen
g.drawImage(dbImage,0,0,this);
}
}
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package towerdefencev4;
import java.awt.*;
import javax.swing.*;
/**
*
*/
public class Creep {
int x, y;
Component comp;
boolean perreicht [] = new boolean [5];
public Creep(int x, int y, Component comp){
this.x=x;
this.y=y;
this.comp=comp;
}
public void paintcreep(Graphics gr){
gr.drawImage(Toolkit.getDefaultToolkit().getImage("../img/creep.gif"), x, y, comp);
}
public void move(){
boolean lr=false;
boolean hr=false;
if(x!=40 && perreicht[0]==false || y!=83 && perreicht[0]==false){
movev(hr);
}
if(x==40 && y==83){
perreicht[0]=true;
}
if(perreicht[0]==true){
if(x!=237){
moveh(lr);
}
}
if(x==237 && y==83){
perreicht[1]=true;
}
if(perreicht[1]==true){
if(y!=206){
movev(hr);
}
}
if(x==237 && y==204){
perreicht[2]=true;
}
if(perreicht[2]==true){
if(x!=79){
lr=true;
moveh(lr);
}
}
if(x==79 && y==205){
perreicht[3]=true;
}
if(perreicht[3]==true){
if(y!=350){
movev(hr);
}
}
if(x==79 && y==350){
perreicht[4]=true;
}
if(perreicht[4]==true){
}
}
public void moveh(boolean lr){//lr=left or right
if(lr==false)
x++;
if(lr==true)
x--;
}
public void movev(boolean hr){//hr = hoch oder runter
if(hr==false)
y++;
if(hr==true)
y--;
}
}
Hoffe ihr könnt mir helfen
MFG RauchenderDachs