Hallo,
ik moet voor een project een applicatie maken waarin animaties zitten.
Ik heb daarom eerst een applet gemaakt waarin de thread / animatie ook goed werkt.
maar als ik nu dezelfde thread met wat aanpassingen in een applicatie wil neerzetten, dan krijg ik een error die ik niet kan achterhalen. Weet iemand misschien wat hier precies fout aan is?
Ik heb dus een applicatie...
ps1: de package klopt gewoon, ondanks de rare naam
ps2: applicatie is gewoon een test applicatie, de uiteindelijk applicatie is veel uitgebreider
En dit is de thread die ik probeer te draaien in bovenstaande applicatie;
In het achterliggende DOS venster krijg ik het volgende te zien:
1 of andere Nullpointer, terwijl het compilen verder goed gaat en alle variabelen gedeclareerd zijn.
We zijn er gister al de hele dag mee bezig geweest, allemaal verschillende dingen te proberen. Maar het lukt gewoon niet. Iemand hier die misschien het probleem ziet of een alternatieve oplossing weet
ik moet voor een project een applicatie maken waarin animaties zitten.
Ik heb daarom eerst een applet gemaakt waarin de thread / animatie ook goed werkt.
maar als ik nu dezelfde thread met wat aanpassingen in een applicatie wil neerzetten, dan krijg ik een error die ik niet kan achterhalen. Weet iemand misschien wat hier precies fout aan is?
Ik heb dus een applicatie...
ps1: de package klopt gewoon, ondanks de rare naam
ps2: applicatie is gewoon een test applicatie, de uiteindelijk applicatie is veel uitgebreider
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
| package myprojects.bolletje;
import java.awt.*;
import java.awt.event.*;
public class PostbodeTest extends Frame
{
PostbodeAnimatie postbode;
public PostbodeTest()
{
postbode = new PostbodeAnimatie();
setSize(400,400);
setTitle("Testen");
setVisible(true);
postbode.start();
}
public static void main(String[] args) {
new PostbodeTest();
}
public void paint(Graphics g)
{
}
public void start() {
if(postbode==null) {
if(getGraphics()!=null) {
postbode=new PostbodeAnimatie();
postbode.start();
System.out.println("Gestart...");
}
}
}
} |
En dit is de thread die ik probeer te draaien in bovenstaande applicatie;
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
| package myprojects.bolletje;
import java.awt.event.*;
import java.awt.*;
class PostbodeAnimatie extends Thread implements Runnable {
private Graphics g;
private ImageObserver f;
Image frame;
private int x=300;
private boolean doorgaanPostbode;
final int LINKS=2,ACTIE=3,RECHTS=2;
private Image[] postLinks,postActie, postRechts;
public PostbodeAnimatie() {
this.g=g;
this.f=f;
this.x=x;
postLinks=new Image[LINKS];
postActie=new Image[ACTIE];
postRechts=new Image[RECHTS];
for(int i=0;i<LINKS;i++) {
postLinks[i]=Toolkit.getDefaultToolkit().getImage("postLinks"+i+".gif");
System.out.println("Image LINKS "+i+" geladen");
}
for(int i=0;i<ACTIE;i++) {
postActie[i]=Toolkit.getDefaultToolkit().getImage("postActie"+i+".gif");
System.out.println("Image ACTIE "+i+" geladen");
}
for(int i=0;i<RECHTS;i++) {
postRechts[i]=Toolkit.getDefaultToolkit().getImage("postRechts"+i+".gif");
System.out.println("Image RECHTS "+i+" geladen");
}
doorgaanPostbode=true;
}
public void run() {
System.out.println("PostbodeAnimatie Alive");
while(true) {
while(doorgaanPostbode) {
System.out.println("PostbodeAnimatie Active");
for(int i=0;i<3;i++) {
tekenPostbode(g,postLinks[0],-50);
tekenPostbode(g,postLinks[1],-50);
}
for(int i=0;i<ACTIE;i++) {
tekenPostbode(g,postActie[i],0);
}
for(int i=0;i<3;i++) {
tekenPostbode(g,postRechts[0],50);
tekenPostbode(g,postRechts[1],50);
}
}
}
}
public void tekenPostbode(Graphics g, Image frame, int stap) {
this.g = g;
x+=stap;
System.out.println("//TEKENPOSTBODE @ "+x+" met stap @ "+stap);
teken(g, frame);
System.out.println("hallow");
slaap(250);
}
public void teken(Graphics g, Image frame)
{
g.drawImage(frame,x,50,f);
}
public void nuStoppen() {
doorgaanPostbode=false;
}
private void slaap(int millisec) {
try {
Thread.sleep(millisec);
} catch(InterruptedException e) {}
}
} |
In het achterliggende DOS venster krijg ik het volgende te zien:
Het gaat dus fout bij de methode 'teken' in de thread.Image LINKS 0 geladen
Image LINKS 1 geladen
Image ACTIE 0 geladen
Image ACTIE 1 geladen
Image ACTIE 2 geladen
Image RECHTS 0 geladen
Image RECHTS 1 geladen
PostbodeAnimatie Alive
PostbodeAnimatie Active
//TEKENPOSTBODE @ 250 met stap @ -50
java.lang.NullPointerException
at myprojects.bolletje.PostbodeAnimatie.teken(PostbodeAnimatie.java:76)
at myprojects.bolletje.PostbodeAnimatie.tekenPostbode(PostbodeAnimatie.j
ava:69)
at myprojects.bolletje.PostbodeAnimatie.run(PostbodeAnimatie.java:51)
1 of andere Nullpointer, terwijl het compilen verder goed gaat en alle variabelen gedeclareerd zijn.
We zijn er gister al de hele dag mee bezig geweest, allemaal verschillende dingen te proberen. Maar het lukt gewoon niet. Iemand hier die misschien het probleem ziet of een alternatieve oplossing weet