L
liquid
Gast
hallo zusammen!
sitz gerade an einem arkanoid klon und habe das problem, dass in meiner klasse Fenster der befehl addKeyListener dezent übersprungen wird... :/
ich erstelle zuerst einen menu-panel, von dem aus über buttons das spiel gestartet wird bzw. die methode setzeImSpiel() aufgerufen wird. klappt auch alles soweit, wie es soll. nur springt das prog beim Fenster erstellen direkt von setSize() zu initZeichenFlaeche(). die klasse spiel beinhaltet die methode KeyEreignisBehandeln(e), die methoden z.b. der klasse schläger (steuern, ...) aufruft. das komische ist, dass wenn ich direkt ins spiel einsteige, also im konstruktor von fenster setzeImMenu() durch setzeImSpiel() austausche, der befehl addKeyListener ausführt wird und ich den schläger steuern kann. hat das was damit zu tun, dass das Spiel-objekt schon im konstruktor erstellt wird? weil eigentlich wirds ja auch erst nach dem addKeyListener() gemacht...
naja, ich checks irgendwie net, seid gnädig, bin halt n newbie...
der code sieht folgendermaßen aus:
ich hoff, ich hab das problem einigermaßen verständlich beschrieben, wäre echt cool, wenn mir da jemand helfen könnte, steh nämlich total aufm schlauch.
besten dank schon mal!
mfg
sitz gerade an einem arkanoid klon und habe das problem, dass in meiner klasse Fenster der befehl addKeyListener dezent übersprungen wird... :/
ich erstelle zuerst einen menu-panel, von dem aus über buttons das spiel gestartet wird bzw. die methode setzeImSpiel() aufgerufen wird. klappt auch alles soweit, wie es soll. nur springt das prog beim Fenster erstellen direkt von setSize() zu initZeichenFlaeche(). die klasse spiel beinhaltet die methode KeyEreignisBehandeln(e), die methoden z.b. der klasse schläger (steuern, ...) aufruft. das komische ist, dass wenn ich direkt ins spiel einsteige, also im konstruktor von fenster setzeImMenu() durch setzeImSpiel() austausche, der befehl addKeyListener ausführt wird und ich den schläger steuern kann. hat das was damit zu tun, dass das Spiel-objekt schon im konstruktor erstellt wird? weil eigentlich wirds ja auch erst nach dem addKeyListener() gemacht...
naja, ich checks irgendwie net, seid gnädig, bin halt n newbie...
der code sieht folgendermaßen aus:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Fenster extends JFrame{
Spiel s1;
Menu m1;
imSpiel = false;
imMenu = false;
public Fenster(){
setTitle("Arkanoid");
setBackground(Color.WHITE);
setSize(breite, hoehe);
// für Steuerung mit Tastatur
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
s1.KeyEreignisBehandeln(e);
}
});
// Vollbildmodus etc.
initZeichenFlaeche();
// am Anfang ins Menu
setzeImMenu();
// zum Schließen des Fensters
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void setzeImSpiel(){
s1 = new Spiel(this);
getContentPane().add(s1);
getContentPane().remove(m1);
imSpiel = true;
imMenu = false;
}
public void setzeImMenu(){
m1 = new Menu(this);
getContentPane().add(m1);
imSpiel = false;
imMenu = true;
}
}
ich hoff, ich hab das problem einigermaßen verständlich beschrieben, wäre echt cool, wenn mir da jemand helfen könnte, steh nämlich total aufm schlauch.
besten dank schon mal!
mfg