Hallo zusammen,
ich versuche gerade, MouseEvents für einzelne Sprites zu implementieren.
Leider ohne Erfolg.
Google und Co haben mir nicht weiter geholfen, da ich irgendwie nicht die passenden Suchbegrife finde
Das Problem:
Ich habe ein Jpanel, dem ein JFrame hinzugefügt wurde. Dieses besitzt Key- und MouseListener, die auch einwandfrei funktionieren.
In einer weiteren Klasse werden die Sprites (verschiedenen Klassen, alle von meiner Sprite-Klasse abgeleitet) erstellt.
Wie kann ich es jetzt hinbekommen, dass ein MouseEvent ausgelöst wird, wenn die Maus über das Bild des Sprites (wird auf dem JFrame gemalt) gleitet bzw. die Maus auf dem Bild des Sprites gedrückt wird?
Ich möchte, dass das Event direkt in der jeweiligen Instanz der Klasse ausgelöst wird, um zu vermeiden, dass ich die Koordinaten vom JFrame-MouseEvent nehmen muss und dann in allen Sprites nach dem einen suchen muss, der über dieser Koordinate liegt.
Codeversuch in einer Klasse der Sprites:
Warum das nicht klappt, ist mir klar. Ich weiß nur nicht, wie ich das implemenieren muss, damit es klappt.
mfg
System.exit(0)
ich versuche gerade, MouseEvents für einzelne Sprites zu implementieren.
Leider ohne Erfolg.
Google und Co haben mir nicht weiter geholfen, da ich irgendwie nicht die passenden Suchbegrife finde
Das Problem:
Ich habe ein Jpanel, dem ein JFrame hinzugefügt wurde. Dieses besitzt Key- und MouseListener, die auch einwandfrei funktionieren.
In einer weiteren Klasse werden die Sprites (verschiedenen Klassen, alle von meiner Sprite-Klasse abgeleitet) erstellt.
Wie kann ich es jetzt hinbekommen, dass ein MouseEvent ausgelöst wird, wenn die Maus über das Bild des Sprites (wird auf dem JFrame gemalt) gleitet bzw. die Maus auf dem Bild des Sprites gedrückt wird?
Ich möchte, dass das Event direkt in der jeweiligen Instanz der Klasse ausgelöst wird, um zu vermeiden, dass ich die Koordinaten vom JFrame-MouseEvent nehmen muss und dann in allen Sprites nach dem einen suchen muss, der über dieser Koordinate liegt.
Codeversuch in einer Klasse der Sprites:
Code:
public class Bauwerk extends Sprite implements MouseListener
{
private Image bild;
Point koord;
int schadensgrenze, schaden;
Bauwerk (int x, int y, int schadensgrenze, Image i)
{
koord = new Point(x, y);
this.schadensgrenze = schadensgrenze;
schaden = 0;
bild = i;
}
public void doLogic(long fps)
{
}
public void drawMe(Graphics g)
{
if (bild != null)
{
g.drawImage(bild,(int) koord.getX(), (int) koord.getY(), null);
}else
{
System.out.print("\n Kraftwerksbild ist null!");
}
}
@Override
public void mouseClicked(MouseEvent e)
{
System.out.print("\n Maus wurde im Sprite gedrückt");
}
@Override
public void mousePressed(MouseEvent e)
{
}
@Override
public void mouseReleased(MouseEvent e)
{
}
@Override
public void mouseEntered(MouseEvent e)
{
}
@Override
public void mouseExited(MouseEvent e)
{
}
}
Warum das nicht klappt, ist mir klar. Ich weiß nur nicht, wie ich das implemenieren muss, damit es klappt.
mfg
System.exit(0)