S
sij
Gast
Hallo
ich habe eine Spielfigur und etwas was jede Sekunde gezeichnet werden soll in einem Applet. Nun soll natürlich die Spielfigur (Image Kugel) nur eine Sleeptime von circa 25ms haben, deshalb habe ich versucht das was jede Sekunde gezeichnet werden soller per util.timer zu realisieren.... da man dafür aber immer eine 2. Klasse braucht kann ich aus irgendeinem Grund nicht die TeilPaintMethode(zeichnen()) aufrufen.... Ich hoffe ihr könnt mir helfen
Ich hab mal Code rausgelöscht der eh nichts damit zu tun hat... Achja noch ne Frage gibt es eine Funktion die einem die Farbe zrückgibt welche eine xy Koordinate hat ?
Danke für eure Hilfe
sij
ich habe eine Spielfigur und etwas was jede Sekunde gezeichnet werden soll in einem Applet. Nun soll natürlich die Spielfigur (Image Kugel) nur eine Sleeptime von circa 25ms haben, deshalb habe ich versucht das was jede Sekunde gezeichnet werden soller per util.timer zu realisieren.... da man dafür aber immer eine 2. Klasse braucht kann ich aus irgendeinem Grund nicht die TeilPaintMethode(zeichnen()) aufrufen.... Ich hoffe ihr könnt mir helfen
Code:
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.util.Timer;
import java.util.TimerTask;
public class Klasse extends Applet implements Runnable, KeyListener
{
Image kugel;
Timer timer;
...
private Image dbImage;
private Graphics dbg;
public void timetime(int sek) {
timer = new Timer();
timer.schedule(new Aufgabe(), sek,sek);
}
....
public void init()
{
resize(xbreit,(ybreit+25));
setBackground(Color.white);
kugel = getImage(getCodeBase(),"billardkugel.gif");
fallen();
addKeyListener(this);
}
public void start ()
{
Thread th = new Thread (this);
th.start ();
}
public void stop()
{
}
public void destroy()
{
}
public void moveyour(){
geschwx=0;
if(rechts){
geschwx=bewegspeed;
}
if(links){
geschwx=-bewegspeed;
}
repaint();
}
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_LEFT : links = true; break;
case KeyEvent.VK_RIGHT : rechts = true; break;
}
moveyour();
}
public void keyReleased(KeyEvent e) {
switch(e.getKeyCode()){
case KeyEvent.VK_LEFT : links = false; break;
case KeyEvent.VK_RIGHT : rechts = false; break;
}
moveyour();
}
public void keyTyped( KeyEvent e ) {}
public void fallen(){
geschwy=-fallspeed;
}
public void beweg(){
xball += geschwx;
yball -= geschwy;
if(xball <= 0){
xball = 0;
}
if (xball >= xbreit-25){
xball = xbreit-25;
}
if(yball <= 25){
//gameover();
}
if (yball >= ybreit){
yball = ybreit;
}
}
public void run ()
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (true)
{
....
beweg();
timetime(1000);
repaint();
try
{
Thread.sleep (25);
}
catch (InterruptedException ex)
{ }
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void update (Graphics g)
{
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
dbg.setColor (getForeground());
paint (dbg);
g.drawImage (dbImage, 0, 0, this);
}
public void paint (Graphics g)
{
......
g.drawImage(kugel,xball,yball,this);
}
public void zeichnen(Graphics g){
g.fillRect(0,8,xbreit,2);
repaint();
}
class Aufgabe extends TimerTask {
public void run() {
Klasse.zeichnen(Graphics g); // Hier ist der Fehler
}
}
}
Ich hab mal Code rausgelöscht der eh nichts damit zu tun hat... Achja noch ne Frage gibt es eine Funktion die einem die Farbe zrückgibt welche eine xy Koordinate hat ?
Danke für eure Hilfe
sij