Ik zit nu al uren te klooien met het volgende probleem..
Ik probeer een simpel veldje te maken met balletjes die bewegen en daarmee binnen het veld blijven. Door op de start knop te drukken komt er een bal bij, door op de stop knop te drukken moet hij stoppen. Ballen toevoegen werkt prima maar zodra ik op de knop 'stop' druk gaat het fout.
Ik krijg een foutmelding op regel 30:
Blijkbaar wijst ball dus nergens naar, hij wordt echter wel gemaakt als ik op de knop 'start' druk. Ik weet trouwens dat het niet erg netjes is geprogrammerd (Bij meerdere ballen raak je de mogelijkheid om ze te stoppen kwijt)
Kan iemand me helpen?
Ik probeer een simpel veldje te maken met balletjes die bewegen en daarmee binnen het veld blijven. Door op de start knop te drukken komt er een bal bij, door op de stop knop te drukken moet hij stoppen. Ballen toevoegen werkt prima maar zodra ik op de knop 'stop' druk gaat het fout.
Ik krijg een foutmelding op regel 30:
code:
1
2
| if (event.getSource() == stop) {
ball.stopBall(); |
Blijkbaar wijst ball dus nergens naar, hij wordt echter wel gemaakt als ik op de knop 'start' druk. Ik weet trouwens dat het niet erg netjes is geprogrammerd (Bij meerdere ballen raak je de mogelijkheid om ze te stoppen kwijt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| package threads;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Applet1 extends Applet implements ActionListener {
private Ball ball;
private Button start;
private Button stop;
public void init() {
stop = new Button("Stop");
add(stop);
stop.addActionListener(this);
start = new Button("Start");
add(start);
start.addActionListener(this);
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == start) {
Graphics g = getGraphics();
Ball ball = new Ball(g);
ball.start();
}
if (event.getSource() == stop) {
ball.stopBall();
}
}
class Ball
extends Thread {
private boolean keepGoing;
private Graphics g;
private int x = 7, xChange = 10;
private int y = 0, yChange = 10;
private int diameter = 10;
private int rectLeftX = 0, rectRightX = 350;
private int rectTopY = 0, rectBottomY = 300;
public Ball(Graphics graphics) {
g = graphics;
keepGoing = true;
}
public void stopBall() {
keepGoing = false;
}
public void run() {
g.drawRect(rectLeftX, rectTopY, rectRightX - rectLeftX,
rectBottomY - rectTopY);
while (keepGoing) {
g.setColor(Color.white);
g.fillOval(x, y, diameter, diameter);
if (x + xChange <= rectLeftX)
xChange = -xChange;
if (x + xChange >= rectRightX)
xChange = -xChange;
if (y + yChange <= rectTopY)
yChange = -yChange;
if (y + yChange >= rectBottomY)
yChange = -yChange;
x = x + xChange;
y = y + yChange;
g.setColor(Color.red);
g.fillOval(x, y, diameter, diameter);
try {
Thread.sleep(50);
}
catch (InterruptedException e) {
System.err.println("Sleep exception");
}
}
}
}
} |
Kan iemand me helpen?