gpt4 book ai didi

Java相同的变量在不同的地方有不同的值

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:44 24 4
gpt4 key购买 nike

所以我有一个类,它处理作为 libgdx 应用程序一部分创建的屏幕的用户输入。我的问题是变量cameraDelta(它是一个Vector2)在keyTyped 和getCameraDelta 中似乎具有不同的值。

在两种方法中在运行时使用 sys.out.println 都会显示每当按下任何“wasd”时值就会发生变化,并且该值会随着时间的推移而保持不变,但从 getCameraDelta 输出时该值始终保持在 (0, 0)

public class InputHandler implements InputProcessor {

private Firetruck myTruck;
private GameWorld myWorld;
private int mouseX;
private int mouseY;
private Vector2 cameraDelta;

public InputHandler(GameWorld myWorld) {
this.myWorld = myWorld;
myTruck = myWorld.getFiretruck();
cameraDelta = new Vector2(0, 0);
}

@Override
public boolean keyDown(int keycode) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean keyUp(int keycode) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean keyTyped(char character) {
if (character == 'w') {
cameraDelta.add(0, 5);
} else if (character == 's') {
cameraDelta.add(0, -5);
} else if (character == 'd') {
cameraDelta.add(5, 0);
} else if (character == 'a') {
cameraDelta.add(-5, 0);
}
return false;
}

public Vector2 getCameraDelta() {
/*/
Vector2 temp = this.cameraDelta.cpy();
/*/
Vector2 temp;
temp = new Vector2(0, 0);
temp.add(cameraDelta);
Gdx.app.log("getCameraDelta", cameraDelta.toString());
cameraDelta.x=0;
cameraDelta.y=0;
return temp;
}

最佳答案

这是因为您要在新的 Vector2 实例中添加一个对象 cameraDelta。 java 中的对象是通过引用传递的,因此每当您对 cameraDelta 进行更改时,它会在使用的所有地方发生更改。例如:

public class Foo {
public int fooNumber;
}

public class Bar {
public Foo fooBar;

public Bar() {
fooBar = new Foo();
fooBar.fooNumber = 1;
}

public void changeReference(Foo foo) {

System.out.println(fooBar.fooNumber); // RESULT -> 1

fooBar = foo; // here you're making your original foo to
//point to the "foo" passed in the method

foo.fooNumber = 0;

System.out.println(fooBar.fooNumber); // RESULT -> 0
}

public static void main(String[] args) {
Bar bar = new Bar();
Foo foo = new Foo();
bar.changeReference(foo);
System.out.println(bar.fooBar.fooNumber); // RESULT -> 0
}

}

关于Java相同的变量在不同的地方有不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com