2013-10-17 123 views
1

我有一个应用程序在libgdx有两个线程。在一个线程中的方法生成的数字(它只能如果我按布顿,我用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; 
} 

第二种方法运行所有的时间(在运行的类),我想利用“位置”变量:

@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…)。我不知道我在哪里犯错。感谢帮助。

回答

1

numbersGame = new NumbersGame().position;将在对象的创建期间获得位置的值。如果您稍后拨打numbersShow(),则不会追溯地更改numbersGame的值。

这个值副本而不是参考副本