我想仅使用Instance Variable来移动一个正方形。我遇到麻烦这是我的代码:
我有一个Variables.JAVA for Variables:
public class Variables {
String name;
int Playerx;
int Playery;
int Playerw;
int Playerh;
}
和一个主要但不改变上述变量的地方。 (简化的)
public static void main(String args[]) throws InterruptedException {
while (true) {
Variables P = new Variables(){
synchronized (c) {
c.clear();
first_level();
P.Playerx = 50;
P.Playery = 50;
P.Playerw = 100;
P.Playerh = 100;
c.drawRect(P.Playerx, P.Playery, P.Playerw, P.Playerh);
}
Thread.sleep(25);
// Controls
if (c.isKeyDown(Console.VK_UP)) {
P.Playery -= 10;
}
else if (c.isKeyDown(Console.VK_DOWN)) {
P.Playery += 10;
}
else if (c.isKeyDown(Console.VK_LEFT)) {
P.Playerx -= 10;
}
else if (c.isKeyDown(Console.VK_DOWN)) {
P.Playery += 10;
}
}
P.Player(x,y,w,h)
不改变?
如何解决这个问题?
答案 0 :(得分:0)
您正在设置每次迭代的默认值,您的代码是同步的,因此在绘制后完成对键的响应,并且在下一次迭代中,您再次覆盖值,这样您将永远不会看到任何更改。 此外,每次都实例化一个新的P对象,而不是保持先前的实例存活,因此它们是GC。