Я не понимаю, что происходит.
Это мой класс
public class MyGame extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
private Timer timer;
private Image plyr;
public int x, y, x_pelota, y_pelota;
private boolean up, down, left, right;
public MyGame(){
resetArrows();
ImageIcon pertsonaiaIcon = new ImageIcon(this.getClass().getResource("img/plyr.png"));
pertsonaia = pertsonaiaIcon.getImage();
timer = new Timer(15, this);
timer.start();
}
private void resetArrows() {
up = false;
down = false;
left = false;
right = false;
}
public boolean updatePosition(String object, int x, int y) {
if (object.equals("Player")){
if (up) {
this.y = y + 5;
this.x = x;
}else if (down) {
this.y = y - 5;
this.x = x;
}else if (left) {
this.x = x - 5;
this.y = y;
}else if (right) {
this.x = x + 5;
this.y = y;
}else {
this.x = x;
this.y = y;
}
}else {
//Mover pelota
}
resetArrows();
//if (Math.abs(x - x_pelota) < 2 && Math.abs(y - y_pelota) < 2)
//return false;
return true;
}
@Override
public void paint(Graphics g){
super.paint(g);
System.out.println(this.x);
g.drawImage(plyr, this.x, this.y, this);
}
@Override
public void actionPerformed(ActionEvent e){
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch(keyCode) {
case KeyEvent.VK_UP:
resetArrows();
up = true;
break;
case KeyEvent.VK_DOWN:
resetArrows();
down = true;
break;
case KeyEvent.VK_LEFT:
resetArrows();
left = true;
break;
case KeyEvent.VK_RIGHT :
resetArrows();
right = true;
break;
}
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
}
У меня есть Поток в другом классе, который вызывает этот класс 'Метод updatePosition, который должен обновлять значения переменных x и y, и это происходит!Я попытался напечатать значения this.x и this.y, и значения обновились, но метод рисования принимает 0, и я не понимаю, почему.
Я не знаю, так ли это, потому что я использую потоки... Я не знаю, что попытаться решить проблему.