10. november 2004 - 21:16Der er
11 kommentarer og 2 løsninger
Timer & repaint() i JApplet - Hvordan konstrueres dette?
Jeg har lavet spil som applications før hvor man bruger både kay, mus og med en timer der opdaterer jævnligt, men jeg når jeg prøver at lave det som en applet så vil det bare ikke rigtigt virke:
KODE: <<< Imports er skåret væk >>>
public class SpilleFlade extends JApplet implements ActionListener{ private Timer timer; private final int DELAY = 10000; public int x = 10; public SpilleFlade() { timer = new Timer(DELAY,this); } public void paint(Graphics g) { g.drawRect(x,10,20,20); } public void actionPerformed(ActionEvent event) { x++; repaint(); } }
Her skulle firkanten der tegnes gerne flytte sig mod højre men der sker ikke rigtig noget. Om det er repaint() metoden der ikke virker det ved jeg ikke.
Har lige opdateret koden lidt, så timer startes og der er en main metode :D Nok en god ide.
OPDATERET KODE
public class SpilleFlade extends JApplet implements ActionListener{ private Timer timer; private final int DELAY = 10000; public int x = 10; public SpilleFlade() { timer = new Timer(DELAY,this); timer.start(); } public void paint(Graphics g) { g.drawRect(x,10,20,20); } public void actionPerformed(ActionEvent event) { x++; repaint(); } public static void main(String[] args) { SpilleFlade f = new SpilleFlade(); } }
public class SpilleFlade extends JApplet implements ActionListener{ private Timer timer; private final int DELAY = 10000; public int x = 10; public SpilleFlade() { timer = new Timer(DELAY,this); timer.start(); } public void paint(Graphics g) { super.paintComponent(g); g.setColor(Color.black); g.drawRect(x,10,20,20); } public void actionPerformed(ActionEvent event) { x++; repaint(); } }
Og så bliver det gamle rektangel ikke slettet - der skal man have super ind i billedet.
Prøv:
import java.awt.*; import java.awt.event.*;
import javax.swing.*;
public class SpilleFlade extends JApplet implements ActionListener{ private Timer timer; private final int DELAY = 1000; public int x = 10; public SpilleFlade() { timer = new Timer(DELAY,this); timer.start(); } public void paint(Graphics g) { super.paint(g); g.drawRect(x,10,20,20); } public void actionPerformed(ActionEvent event) { x += 10; repaint(); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.