Avatar billede stephanryer Nybegynder
10. november 2004 - 21:16 Der 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.

Håber nogen kan hjælpe?
Avatar billede kalp Novice
10. november 2004 - 21:20 #1
mangler du ikke super.paintComponent(g); ?
Avatar billede stephanryer Nybegynder
10. november 2004 - 21:21 #2
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();
    }
}
Avatar billede kalp Novice
10. november 2004 - 21:21 #3
public void paint(Graphics g) {
super.paintComponent(g);
        g.drawRect(x,10,20,20);
    }


? ... er ikke sikker
Avatar billede stephanryer Nybegynder
10. november 2004 - 21:22 #4
jamen hvis jeg ændrer paint til paintComponent så bliver vinduet gråt og der tegnes ikke noget ???
Avatar billede kalp Novice
10. november 2004 - 21:24 #5
public void paint(Graphics g) {
super.paintComponent(g);
h.setColor(Color.black);
        g.drawRect(x,10,20,20);
    }

?
Avatar billede kalp Novice
10. november 2004 - 21:24 #6
public void paint(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
        g.drawRect(x,10,20,20);
    }
Avatar billede arne_v Ekspert
10. november 2004 - 21:29 #7
main bruges ikke i en applet
Avatar billede arne_v Ekspert
10. november 2004 - 21:30 #8
du kan lave en init metode hvis du har brug for det
Avatar billede kalp Novice
10. november 2004 - 21:33 #9
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();
    }
      }

jeg satser på super. hhehe
Avatar billede arne_v Ekspert
10. november 2004 - 21:37 #10
Faktisk virker programmet 21:21:23 !

Men 1 pixel hver 10. sekund er dæleme langsomt.

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();
    }
}
Avatar billede stephanryer Nybegynder
10. november 2004 - 21:41 #11
hold da kæft mand :D DET VIRKER JO ! Tak drengene !

Svar og få point!
Avatar billede arne_v Ekspert
10. november 2004 - 21:44 #12
begge formoder jeg ?
Avatar billede kalp Novice
10. november 2004 - 21:50 #13
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester