我在libgdx
中有两个线程的aplicaton。在一个线程中,该方法生成数字(仅当我按下按钮时才有效,我使用Gdx.graphics.setContinuousRendering(false);
来阻止它)
public int numbersShow(){
List<String> d = generateNumbers.generate();
a = d.get(0);
b = d.get(1);
c = d.get(2);
e = d.get(3);
f = d.get(4);
pos1 = (Integer) p.get(0);
pos2 = (Integer) p.get(1);
pos3 = (Integer) p.get(2);
if(pos1==0){
number.draw(batch, e, 50, 350);
position=0;
}
if(pos1==1){
number.draw(batch, f, 50, 350);
position=1;
}
if(pos1==2){
number.draw(batch, c, 50, 350);
position=2;
}
return position;
}
第二种方法一直运行(在runnable类中),我想取“位置”变量:
@Override
public void run() {
Gdx.graphics.requestRendering();
numbersGame = new NumbersGame().position;
if(Gdx.input.isKeyPressed(Input.Keys.NUM_1)){
Gdx.app.log("pressed", "1");
p1 = numbersGame;
Gdx.app.log("p1", ""+p1);
}
但p1 = 0
(但numbersShow()
方法生成不同的values 0,1 ,2…
)始终如此。我不知道哪里弄错了。谢谢你的帮助。
答案 0 :(得分:1)
numbersGame = new NumbersGame().position;
将在对象的创建期间获取位置值。如果您稍后致电numbersShow()
,则不会追溯更改numbersGame
的值。
这是值副本而非参考副本。