Hallo, ich habe ein Problem und zwar habe ich einen grafischen Würfel programmiert der per Klich auf einen button eine Zufallszahl zwischen 1 und 6 darstellt. soweit so gut, allerdings möchte dem Benutzer das gefühl geben, das der Würfel wirklich würfelt.
Dazu will ich, dass mehrere Zufallszahlen hintereinander angezeigt werden mit delay dazwischen, welches sich immer weiter verkürzt bis der Würfel letztlich zum stehen kommt.
ich hoffe, ich konnte das einigermaßen sinnig erklären...
Hier mein Quelltext für diese Methode, wie ich es bis jetzt habe (funktioniert aber nicht):
getPips holt sich aus einer anderen Klasse eine Zufallszahl von 1 bis 6.
setImage(File file) habe ich wie folgt implementiert:
dann wäre da noch die paintComponent:
update() wird über MouseListener woanders aufgerufen beim Buttonklick. er zeigt auch den Würfel an, allerdings nicht wie ich mir das wünsche und der button bleibt ganz lange gedrückt. als wenn das delay sich nur auf den Button auswirkt... und dann zwichnet er danach halt einen würfel.
er soll aber ja wie gesagt diesen zeichnen, dann kurz warten, ihn dann durch einen anderen ersetzen, dann noch kürer warten usw. bis zum stillstand.
weiss jemand wo der fehler liegt??
vielen dank schonmal im voraus!
Dazu will ich, dass mehrere Zufallszahlen hintereinander angezeigt werden mit delay dazwischen, welches sich immer weiter verkürzt bis der Würfel letztlich zum stehen kommt.
ich hoffe, ich konnte das einigermaßen sinnig erklären...
Hier mein Quelltext für diese Methode, wie ich es bis jetzt habe (funktioniert aber nicht):
Code:
public void update()
{
int delay=500;
for (int i=10; i>=0; i--)
{
int pips = dm.getPips();
file = new File("/Uni/OOP/serie05/wuerfel"+pips+".gif");
this.setImage(file);
try{Thread.sleep(delay);} catch (InterruptedException e) {}
delay = delay-40;
}
}
getPips holt sich aus einer anderen Klasse eine Zufallszahl von 1 bis 6.
setImage(File file) habe ich wie folgt implementiert:
Code:
public void setImage(File file )
{
image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
if ( image != null )
repaint();
}
Code:
protected void paintComponent(Graphics g)
{
if (image != null)
g.drawImage(image,0,0,this);
repaint();
}
update() wird über MouseListener woanders aufgerufen beim Buttonklick. er zeigt auch den Würfel an, allerdings nicht wie ich mir das wünsche und der button bleibt ganz lange gedrückt. als wenn das delay sich nur auf den Button auswirkt... und dann zwichnet er danach halt einen würfel.
er soll aber ja wie gesagt diesen zeichnen, dann kurz warten, ihn dann durch einen anderen ersetzen, dann noch kürer warten usw. bis zum stillstand.
weiss jemand wo der fehler liegt??
vielen dank schonmal im voraus!