2012-08-15 3 views
0

나는 안드로이드 게임을하고있다. 전체 게임 플레이는 "Gameplay"클래스에 있습니다. 문제는 내가 다시 시작 옵션을 가지고 싶을 때 "Gameplay"클래스에서 "mg"개체를 제거하고 새 클래스를 만드는 방법을 모릅니다. 여기 내 코드는 다음과 같습니다.자바에서 객체 재설정

package com.PJA.game; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 

public class GameScreen extends BaseScreen { 
    static short state=1; 
    Gameplay mg; 
    Menu mm; 
    LostScreen ls; 
    public GameScreen(Gra game) { 
     super(game); 
     mm=new Menu(); 
     mg=new Gameplay(); 
     ls=new LostScreen(); 
    } 

    public void update() { 
     if(state==1) mm.live(); 
     if(state==2) mg.live(); 
     if(state==3) ls.live(); 

     Gdx.app.log("CurrentState: ", Integer.toString(state)); 
    } 

    public void drau(SpriteBatch sb) { 
     if(state==1) mm.show(sb); 
     if(state==2) mg.show(sb);  
     if(state==3) ls.show(sb); 
    } 
} 

답변

1

새로 작성하여 mg으로 설정하십시오.

0
mg = new Gameplay() 

이 방법이 더 장황 (결국 쓰레기 - 수집됩니다) 예전

또 다른 옵션을 대체 할 새로운 인스턴스를 생성합니다, 모든 설정하는 .reset() 방법을 작성하는 것입니다 필드는 Gameplay의 초기 값으로 설정됩니다. 이렇게하면 재설정하려는 필드를보다 잘 제어 할 수 있지만 모든 것을 원하면 - Gameplay의 새 인스턴스를 만듭니다.

0

생성자의 모든 필드를 초기화하는 것은 좋지 않습니다. 자연스럽지 만 재사용이 제한됩니다. 전용 init() 또는 reset() 방법을 만드는 것이 더 좋습니다.

public GameScreen(Gra game) { 
    super(game); 

    reset(); 
} 

public void reset() { 
    mm=new Menu(); 
    mg=new Gameplay(); 
    ls=new LostScreen(); 
} 
관련 문제