Autor Wątek: problem z prosta animacja  (Przeczytany 844 razy)

Offline Emeryt

  • Użytkownik

# Marzec 21, 2010, 21:03:57
siemka, wyjaśnijcie gdzie robię tu błąd? Chce żeby przykładowy prostokąt się poruszał a nie rysował cały czas. Co przeoczyłem? To przykładowe klasy:

import javax.swing.JFrame;
public class Application extends JFrame{
Application(){
super("Ramka...");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
setVisible(true);
}
}

import java.awt.Graphics;


public class AnimationTest {
public Application app;
private int x=50,y=50;

public static void main(String[] args){
AnimationTest test = new AnimationTest();
test.run();
}

public void run(){
app= new Application();
animLoop();
}
public void animLoop(){
int i=0;
while(i<50){
x+=2;
y+=2;

//Rysowanie na ekranie
Graphics g = app.getGraphics();
draw(g);
g.dispose();
i++;
//Chwila przerwy
try{
Thread.sleep(20);
}catch(InterruptedException ex){}
}
}

public void draw(Graphics g){
g.fillRect(x, y, 10, 10);
}
}

//jak skomentuję g.dispose() to efekt jest ten sam.. tu tkwi problem? czemu dispose nie działa tak jak powinno?;>
« Ostatnia zmiana: Marzec 21, 2010, 21:26:51 wysłana przez Emeryt »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline dannte

  • Użytkownik

# Marzec 22, 2010, 13:08:07
Metoda dispose działa tak:
Cytat: Dokumentacja Javy
Disposes of this graphics context and releases any system resources that it is using. A Graphics object cannot be used after disposehas been called.
Tradycyjna metoda "poruszania się prostokątu" to wymazywanie starej pozycji przed każdym malowaniem.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 22, 2010, 13:11:52
Cytuj
siemka, wyjaśnijcie gdzie robię tu błąd?
Przede wszystkim przed założeniem tematu na forum nie przeczytałeś Regulaminu i wskazanych w nim dokumentów. :)