更改另一个类中的静态变量的值

时间:2016-03-02 23:07:02

标签: java

我正在尝试显示在屏幕上移动的角色,但x和y变量保持不变。我的印象是,当我更改静态变量的值时,它会在类的每个实例中发生变化。

这是用于移动角色的类

public class MoveChara {
 private static int x, y;
 private int dx, dy;

 public void init() {
  x = 30;
  y = 50;
  dx = 1;
  dy = 1;
 }

 public void move() {
  x += dx;
  y += dy;
 }

 public int getX() {
  return x;
 }

 public int getY() {
  return y;
 }
}

这是调用move方法的类的一部分

public class Game implements Runnable {
 private MoveChara move;
 private boolean running = false;

 public void run() {
  init();

  while(running) {
   tick();
   render();
  }
  stop();
 }

 private void init()  {
  move = new MoveChara;
 }

 private void tick() {
  move.move();
 }
}

以及绘制角色的方法

public class Draw extends JPanel {
 public MoveChara move;
 public ImageMake imgm;

 @Override
 public void paintComponent(Graphics g) {
  imgm = new ImageMake();
  super.paintComponent(g);
  Graphics2D g2d = (Graphics2D) g;

  move = new MoveChara();
  move.init();
  g2d.drawImage(
   imgm.createImg("Images/SpriteSheet.png"),
   move.getX(),
   move.getY(),
   this
  );
 }
}

2 个答案:

答案 0 :(得分:5)

静态变量属于不属于该类实例的类。 要从类的外部访问静态变量,您可以这样做:

claasName.variablename = newValue;

paintComponent方法中,在父类中调用init方法,这是在每次调用时初始化x和y。如果将初始化移动到静态变量声明,这将是有效的。 如果您正在寻找,请告诉我。

答案 1 :(得分:-2)

静态变量在类的实例之间共享。编辑后,它们会针对所有实例进行更改。