2013-10-17 2 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의 값은 소급 변경되지 않습니다.

값 복사본이고 참조 사본이 아닙니다.