2016-05-08 3 views
0

Ich muss nur zu einer Aktivität von LibGdx Kern-Klassen gehen, aber mein Problem ist, dass ich einen GameStateManager benutze, der mich mit diesem posts answer ich habe gefunden. Der Fehler gab mir war, dass meine Hauptklasse im Kernprojekt " MyGdxGame "war null.Wie kann ich auf eine Aktivität aus dem LibGdx-Kernprojekt zugreifen?

Das ist mein GameStateManager Klasse:

public class GameStateManager { 

private GameState gameState; 

public static final int MENU = 0; 
public static final int PLAY = 1; 
public static final int HIGHSCORESTATE = 2; 
public static final int BALLSTORE = 3; 
public static final int CHARACTERSTORE = 4; 
public static final int WINAPRIZE = 5; 

public GameStateManager(){ 
    setState(MENU); 
} 

public void setState(int state){ 
    if(gameState != null)gameState.dispose(); 

    if(state == MENU){ 
     gameState = new MenuState(this); 
    } 
    if(state == PLAY){ 
     gameState = new PlayState(this); 
    } 
    if(state == HIGHSCORESTATE){ 
     gameState = new HighScoreState(this); 
    } 
    if(state == BALLSTORE){ 
     gameState = new BallStoreState(this); 
    } 
    if(state == CHARACTERSTORE){ 
     gameState = new CharacterStoreState(this); 
    } 
    if(state == WINAPRIZE){ 
     gameState = new WinPrizeState(this); 
    } 
} 

public void update(float dt){ 
    gameState.update(dt); 
} 

public void draw(){ 
    gameState.draw(); 
} 
} 

Und das ist meine GameState Klasse, die alle meine Staaten

public abstract class GameState { 

protected GameStateManager gsm; 

protected GameState(GameStateManager gsm){ 
    this.gsm = gsm; 
    init(); 

} 

public abstract void init(); 
public abstract void update(float dt); 
public abstract void draw(); 
public abstract void handleInput(); 
public abstract void dispose(); 
} 

verlängern Und das ist mein MyGdxGame class.AndroidStuff das Interface ist.

public class MyGdxGame extends ApplicationAdapter { 

public static int WIDTH; 
public static int HEIGHT; 
public static OrthographicCamera camera; 
private GameStateManager gsm; 

public MyGdxGame(AndroidStuff androidStuff) { 
    super(); 
    this.androidStuff = androidStuff; 
} 

@Override 
public void create() { 

    WIDTH = Gdx.graphics.getWidth(); 
    HEIGHT = Gdx.graphics.getHeight(); 

    camera = new OrthographicCamera(); 
    camera.translate(WIDTH/2, HEIGHT/2); 
    camera.update(); 

    gsm = new GameStateManager(); 

} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    gsm.update(Gdx.graphics.getDeltaTime()); 
    gsm.draw(); 
} 
} 
+0

Bitte fügen Sie auch Ihre "MyGdxGame" Datei hinzu. –

+0

@BasimKhajwal Bearbeitet. –

+0

Die angegebenen Klassen scheinen korrekt zu sein, der Fehler stammt wahrscheinlich von 'MenuState', bitte fügen Sie auch diese Datei hinzu. –

Antwort

0

Nur falls jemand das gleiche Problem hat

ich genau wie in der link's answer tat, aber ich habe nicht den MenuState Konstruktor ändern, Ich habe gerade die Konstrukteurs-GameStateManager und ich gab es public MyGdxGame myGdxGame public class GameStateManager(MyGdxGame mygame){this.myGdxgame = mygame;} und Ich habe die Methode von gsm.mygdx.androidStuff.startActivity() zugegriffen, die ich in jeder Klasse ausführen kann, die GameState erweitert.

Verwandte Themen