我正在使用libGDX在Android中开发一个简单的游戏。它只是一个捕捉游戏,其中有一些物品将从屏幕顶部落下,底部还有一个篮子,用户将滚动篮子收集这些物品。几秒钟后游戏将完成,现在在渲染方法中我有一个条件,我需要在30秒后对游戏说。所以我必须调用一个我需要显示GAME OVER图像的活动,但我无法弄清楚如何从Render方法中调用此活动。
我是libGDX的新手,我不知道该怎么做。任何人都可以帮我解决这个问题。任何帮助都会很明显。 感谢。
答案 0 :(得分:1)
这听起来不像是另一个活动的工作。相反,一种选择是在主Activity中使用不同的屏幕。更多信息:https://code.google.com/p/libgdx-users/wiki/ScreenAndGameClasses
或者,您可以简单地跟踪您的游戏状态(计划,暂停,游戏结束等),并根据该状态绘制不同的内容。像这样:
public void draw(){
if(state == playing){
//draw game
}
else if(state == gameOver){
//draw game over
}
}
答案 1 :(得分:1)
首先显示图像,您应该尝试使用舞台将使您的生活更轻松。在这个阶段你可以添加你想要的多个小部件(Actors),然后通过调用stage.draw()它们将为你呈现。检查下面是如何做到的。
public class GameOver implements com.badlogic.gdx.Screen{
final Drop game;
Image gameOverImage;
Stage gameOverStage; // add this
TextureRegion textureRegion; // Get region from texture
TextureRegionDrawable textureRegionDrawable; // drawable from textureRegion
// O̶r̶t̶h̶o̶g̶r̶a̶p̶h̶i̶c̶C̶a̶m̶e̶r̶a̶ ̶c̶a̶m̶e̶r̶a̶; // No need of this stage's viewport has camera
public GameOver(final Drop gam) {
Log.d("Called ","Called ");
game = gam;
gameOverStage = new Stage(new StretchViewport(yourDesiredwidth, yourDesiredHeight));
// You can use different Viewport class if you want see Viewport in Documentation
textureRegion = new TextureRegion(new Texture(Gdx.files.internal("game_over.png"));
textureRegionDrawable = new TextureRegionDrawable(textureRegion);
gameOverImage = new Image(textureRegionDrawable );
gameOverImage.setBounds(x, y, width, height);
stage.add(gameOverImage);
//c̶a̶m̶e̶r̶a̶ ̶=̶ ̶n̶e̶w̶ ̶O̶r̶t̶h̶o̶g̶r̶a̶p̶h̶i̶c̶C̶a̶m̶e̶r̶a̶(̶)̶; // No need of this see above
// c̶a̶m̶e̶r̶a̶.̶s̶e̶t̶T̶o̶O̶r̶t̶h̶o̶(̶f̶a̶l̶s̶e̶,̶ ̶8̶0̶0̶,̶ ̶4̶8̶0̶)̶; // Same
}
并且在render方法中调用stage.draw(),这样舞台的所有actor都会被渲染,包括你的图像:
@Override
public void render(float delta) {
// TODO Auto-generated method stub
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(); // If you want the actors in stage to move or do some other work
stage.draw(); // Draws all the actors
/* Below is for painting your text although it could be done by creating a Label Actor and add it in stage as the image*/
stage.getBatch().begin();
game.font.setColor(0,0,0,1);
game.font.setScale(3);
game.font.draw(game.batch, "Game Ends!!! ", 100, 150);
game.font.draw(game.batch, "Tap To restart", 100, 100);
stage.getBatch().end();
}
第二个用于显示游戏结束窗口,您可以创建一个表格,将所有游戏添加到表格中的演员,然后当您想要显示它时,您只需将表格添加到舞台上。您可以在文档中阅读有关表格的更多信息。一开始有点棘手,但您稍后会获得奖励。