Hallo,
ich habe drei Klassen. Eine Gui-class in der es einen MouseListener gibt, durch den ich die x- und y-Position des Mausklicks in zwei Variablen speichere. Die Player-Position ist anfangs x=1, y=1.
In die CalcVector-class werden in die update-Methode über die main-class die Player und Mouseposition-Werte überliefert. Im Grunde soll ein Vektor zwischen dem Player und der Mauspositon errechnet werden.
Mein Problem liegt darin, dass ich möchte, dass die Player-Position bei Mausklick, die Position von der Maus annimmt. Irgendwie well mein Setter da nicht arbeiten.
Main:
Gui:
CalcVector:
Ich hoffe ich habe alles einigermaßen verständlich erklären können. Danke schon einmal für jede Anregung und Hilfe!
ich habe drei Klassen. Eine Gui-class in der es einen MouseListener gibt, durch den ich die x- und y-Position des Mausklicks in zwei Variablen speichere. Die Player-Position ist anfangs x=1, y=1.
In die CalcVector-class werden in die update-Methode über die main-class die Player und Mouseposition-Werte überliefert. Im Grunde soll ein Vektor zwischen dem Player und der Mauspositon errechnet werden.
Mein Problem liegt darin, dass ich möchte, dass die Player-Position bei Mausklick, die Position von der Maus annimmt. Irgendwie well mein Setter da nicht arbeiten.
Main:
Java:
package m_events;
import javax.swing.JFrame;
public class main {
public static void main(String[] args) {
Gui g = new Gui();
CalcVector cv = new CalcVector();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setSize(300, 300);
g.setVisible(true);
while(true){
cv.update(g.getPlayerX(), g.getPlayerY(), g.getMouseX(), g.getMouseY()); //Werte aus gui nach CalcVector
System.out.println(g.getPlayerX()); //die Spielerposition ändert sich durch den Setter leider nicht
try {
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Gui:
Java:
package m_events;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui extends JFrame{
private JPanel mousepanel;
private float m_posx;
private float m_posy;
private float p_posx=1;
private float p_posy=1;
public Gui(){
super("title");
mousepanel = new JPanel();
mousepanel.setBackground(Color.WHITE);
add(mousepanel, BorderLayout.CENTER);
HandlerClass handler = new HandlerClass();
mousepanel.addMouseListener(handler);
mousepanel.addMouseMotionListener(handler);
}
private class HandlerClass implements MouseListener, MouseMotionListener{
public void mouseClicked(MouseEvent event){
m_posx=event.getX();
m_posy=event.getY();
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
public float getMouseX(){
return m_posx;
}
public float getMouseY(){
return m_posy;
}
public float getPlayerX(){
return p_posx;
}
public float getPlayerY(){
return p_posy;
}
public void setPlayerX(float x){
p_posx=x;
}
public void setPlayerY(float y){
p_posy=y;
}
}
CalcVector:
Java:
package m_events;
public class CalcVector {
private float playerx;
private float playery;
private float mousex;
private float mousey;
private float vector_x;
private float vector_y;
private float betrag;
Gui g = new Gui();
public void update(float px, float py, float mx, float my){
mousex=mx;
mousey=my;
playerx=px;
playery=py;
// Calculating Vector and speed
vector_x=mousex-playerx;
vector_y=mousey-playery;
betrag = (float) Math.sqrt(vector_x*vector_x+vector_y*vector_y);
g.setPlayerX(mousex); //hier soll die Playerposition gleich der Mausposition gesetzt werden
g.setPlayerY(mousey);
}
public float getVectorX(){
return vector_x;
}
public float getVectorY(){
return vector_y;
}
public float getMouseX(){
return mousex;
}
public float getMouseY(){
return mousey;
}
public float getBetrag(){
return betrag;
}
}
Ich hoffe ich habe alles einigermaßen verständlich erklären können. Danke schon einmal für jede Anregung und Hilfe!