我正在尝试显示在屏幕上移动的角色,但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
);
}
}
答案 0 :(得分:5)
静态变量属于不属于该类实例的类。 要从类的外部访问静态变量,您可以这样做:
claasName.variablename = newValue;
在paintComponent
方法中,在父类中调用init方法,这是在每次调用时初始化x和y。如果将初始化移动到静态变量声明,这将是有效的。
如果您正在寻找,请告诉我。
答案 1 :(得分:-2)
静态变量在类的实例之间共享。编辑后,它们会针对所有实例进行更改。