2012-10-20 47 views
1

我一直在使用libgdx过去3周.. 我创建了两个屏幕引用到游戏:LibGdx - 在屏幕上显示类需要帮助

public class Game extends Game { 

TitleScreen titleScreen; 
SplashScreen splashScreen; 

@Override 
public void create() { 
    // TODO Auto-generated method stub 
    titleScreen = new TitleScreen(this); 
    splashScreen = new SplashScreen(this); 
    setScreen(splashScreen); 

} 

}

public class SplashScreen implements Screen { 

Game game; 

public SplashScreen(Game game) { 
    // TODO Auto-generated constructor stub 
    this.game = game; 
    } 


@Override 
public void show() { 
    // TODO Auto-generated method stub 
} 

@Override 
public void hide() { 
    // TODO Auto-generated method stub 
} 

@Override 
public void render(float delta) { 
    // TODO Auto-generated method stub 
    Gdx.gl.glClearColor(0.5f, 1f, 1f, 1); 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    if(Gdx.input.justTouched()){ 
     game.splashScreen.dispose(); 
     game.setScreen(game.titlescreen); 
    } 

} 

@Override 
public void resize(int width, int height) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void pause() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void resume() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void dispose() { 
    // TODO Auto-generated method stub 


} 

如何完全处理splashscreen?当我打电话给titlescreen班的game.setscreen(game.splashscreen)时,它恢复splashscreen;。我期待以设置一个新的splashscreen ..

+0

请更正代码格式。 – vfcosta

回答

0

创建一个新的启动画面,你想从一开始就显示启动每次:

game.setScreen(new SplashScreen(game)); 
+0

感谢您的解决方案! – lovareth

+0

如果这是一个您打算频繁返回的屏幕,这是非常糟糕的。屏幕是大型复杂的对象,实例化和垃圾收集不是你应该依赖的东西。你应该做的是在show()中设置核心设置逻辑,在每次切换到该屏幕时调用该逻辑,并且应该拆除并释放hide()中的某些资源 – nhydock