Hallo,
wollte gerade die Mausposition in meinem Spielfeld auslesen. ( nur X )
Nur leider schaff ich das nicht.
Das hier ist mein Spielfeld und mit diesem Code wollte ich die Mausposition auslesen:
den habe ich in die Klasse GAMEWINDOW noch eingefügt
und das x habe ich mir ausgeben lassen
nur leider funktioniert das nicht.
( x wird immer als 0 angezeigt )
bitte um Hilfe .
lg feiste
wollte gerade die Mausposition in meinem Spielfeld auslesen. ( nur X )
Nur leider schaff ich das nicht.
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferStrategy;
import java.util.*;
import java.awt.event.*;
import java.io.Serializable;
public class GAMEWINDOW extends Canvas implements Runnable, Serializable, KeyListener
{
private BufferStrategy strategy;
private long lastLoopTime;
private boolean gameRunning=true;
private static GAMEWINDOW instance;
private String Taste="";
public static double punkte;
private Vector<BILD> sprites=new Vector<BILD>();
KEYSTATE ks = new KEYSTATE();
public static GAMEWINDOW getInstance()
{
if(instance==null)
{
instance = new GAMEWINDOW();
}
return instance;
}
public GAMEWINDOW()
{
// create a frame to contain our game
JFrame container = new JFrame("Spielfeld");
// get hold the content of the frame and set up the
// resolution of the game
JPanel panel = (JPanel) container.getContentPane();
panel.setPreferredSize(new Dimension(600,700));
panel.setLayout(null);
panel.addMouseMotionListener(new MyMotionListener()); // hier noch ein code der für das auslesen der MausPosition relevant ist
// setup our canvas size and put it into the content of the frame
setBounds(0,0,600,700);
panel.add(this);
// Tell AWT not to bother repainting our canvas since we're
// going to do that our self in accelerated mode
setIgnoreRepaint(true);
// finally make the window visible
container.pack();
container.setResizable(false);
container.setVisible(true);
// create the buffering strategy which will allow AWT
// to manage our accelerated graphics
createBufferStrategy(2);
strategy = getBufferStrategy();
new Thread(this).start();
//addHierarchyListener(this);
addKeyListener(this);
//punkte = SPIEL.punkte2;
// this.punkte = punkte;
}
public void run()
{
while (gameRunning) {
// work out how long its been since the last update, this
// will be used to calculate how far the entities should
// move this loop
long delta = System.currentTimeMillis() - lastLoopTime;
lastLoopTime = System.currentTimeMillis();
// Get hold of a graphics context for the accelerated
// surface and blank it out
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
g.setColor(Color.white);
g.fillRect(0,0,600,700);
synchronized(sprites)
{
Iterator<BILD> iterator = sprites.iterator();
while(iterator.hasNext())
{
BILD sprite = iterator.next();
if(sprite.LeseSichtbar())
{
sprite.Draw(g);
}
}
}
g.setColor(Color.red);
punkte = Math.ceil(SPIEL.punkte2 / KNOPFFENSTER.hölzer / 10);
g.drawString( "" + punkte ,530 , 20 );
// finally, we've completed drawing so clear up the graphics
// and flip the buffer over
g.dispose();
strategy.show();
// finally pause for a bit. Note: this should run us at about
// 100 fps but on windows this might vary each loop due to
// a bad implementation of timer
try { Thread.sleep(10); } catch (Exception e) {}
requestFocusInWindow();
}
}
public KEYSTATE getKeystate()
{
return ks;
}
public void AddSprite(BILD bild)
{
synchronized(sprites)
{
sprites.add(bild);
}
}
public void stopRunning()
{
gameRunning=false;
try { Thread.sleep(1000); } catch (Exception e) {}
synchronized(sprites)
{
sprites.clear();
}
instance=null;
}
public void hierarchyChanged(HierarchyEvent e)
{
gameRunning=false;
}
public void keyPressed(KeyEvent e)
{
ks.add(e);
}
public void keyReleased(KeyEvent e)
{
ks.remove(e);
}
public void keyTyped(KeyEvent e)
{
}
public String LeseTaste()
{
return Taste;
}
}
Das hier ist mein Spielfeld und mit diesem Code wollte ich die Mausposition auslesen:
Java:
class MyMotionListener extends MouseMotionAdapter{
int x =0 ;
public void mouseMoved(MouseEvent m) {
x = m.getX();
}
}
den habe ich in die Klasse GAMEWINDOW noch eingefügt
und das x habe ich mir ausgeben lassen
nur leider funktioniert das nicht.
( x wird immer als 0 angezeigt )
bitte um Hilfe .
lg feiste