libgdx背景图像不显示

时间:2016-04-26 01:08:44

标签: java android android-studio libgdx

我有构造函数:

backgroundTexture = new Texture(Gdx.files.internal("Pantalla.jpg"));

在render()中:

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0.2f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        camera.update();
        myGame.batch.setProjectionMatrix(camera.combined);
        myGame.batch.begin();
        myGame.batch.draw(backgroundTexture, 0, 0);
        stage.draw();
        myGame.batch.end();
        }

该课程的完整代码是:

    package states;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;

import mx.itesm.mty.MyGame;


public class MenuState implements Screen{
    final MyGame myGame;
    Skin skin;
    Skin skinPant;
    Stage stage;
    SpriteBatch batch;
    TextButton.TextButtonStyle textButtonStyle1;
    TextButton.TextButtonStyle textButtonStyle2;
    TextButton.TextButtonStyle textButtonStyle3;
    TextButton.TextButtonStyle textButtonStyle4;
    TextureAtlas buttonAtlas;
    BitmapFont font;
    Texture backgroundTexture;
    Sprite backgroundSprite;

    OrthographicCamera camera;
    public MenuState(final MyGame game) {

        myGame = game;
        camera = new OrthographicCamera();
        camera.setToOrtho(false,800,480);
        batch = new SpriteBatch();
        skin = new Skin();
        font = new BitmapFont();
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);

        buttonAtlas = new TextureAtlas(Gdx.files.internal("boton.atlas"));
        skin.addRegions(buttonAtlas);



        backgroundTexture = new Texture(Gdx.files.internal("Pantalla.jpg"));
        backgroundSprite = new Sprite(backgroundTexture);

        textButtonStyle1 = new TextButton.TextButtonStyle();
        textButtonStyle1.font = font;
        textButtonStyle1.down = skin.getDrawable("Inicio");
        textButtonStyle1.up = skin.getDrawable("Inicio");
        textButtonStyle1.checked = skin.getDrawable("Inicio");
        TextButton buttonPlay = new TextButton("", textButtonStyle1);

        textButtonStyle2 = new TextButton.TextButtonStyle();
        textButtonStyle2.font = font;
        textButtonStyle2.down = skin.getDrawable("Instrucciones");
        textButtonStyle2.up = skin.getDrawable("Instrucciones");
        textButtonStyle2.checked = skin.getDrawable("Instrucciones");
        TextButton buttonInst = new TextButton("",textButtonStyle2);

        textButtonStyle3 = new TextButton.TextButtonStyle();
        textButtonStyle3.font = font;
        textButtonStyle3.down = skin.getDrawable("Informacion");
        textButtonStyle3.up = skin.getDrawable("Informacion");
        textButtonStyle3.checked = skin.getDrawable("Informacion");
        TextButton buttonInfo = new TextButton("",textButtonStyle3);

        textButtonStyle4 = new TextButton.TextButtonStyle();
        textButtonStyle4.font = font;
        textButtonStyle4.down = skin.getDrawable("Salir");
        textButtonStyle4.up = skin.getDrawable("Salir");
        textButtonStyle4.checked = skin.getDrawable("Salir");
        TextButton buttonSalir = new TextButton("",textButtonStyle4);

        buttonPlay.setWidth(300f);
        buttonPlay.setHeight(100f);
        buttonPlay.setPosition(Gdx.graphics.getWidth() / 2 - 150f, Gdx.graphics.getHeight() / 2);

        buttonInst.setWidth(300f);
        buttonInst.setHeight(100f);
        buttonInst.setPosition(Gdx.graphics.getWidth() / 2 - 150f, Gdx.graphics.getHeight() / 2 - 120f);

        buttonInfo.setWidth(300f);
        buttonInfo.setHeight(100f);
        buttonInfo.setPosition(Gdx.graphics.getWidth() / 2 - 150f, Gdx.graphics.getHeight() / 2 - 240f);

        buttonSalir.setWidth(300f);
        buttonSalir.setHeight(100f);
        buttonSalir.setPosition(Gdx.graphics.getWidth() / 2 - 150f, Gdx.graphics.getHeight() / 2 - 360f);

        buttonPlay.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                myGame.setScreen(new PlayMenuState(myGame));
            }
        });
        buttonInst.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                myGame.setScreen(new PlayMenuState(myGame));
            }
        });
        buttonInfo.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                myGame.setScreen(new PlayMenuState(myGame));
            }
        });
        buttonSalir.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                myGame.setScreen(new PlayMenuState(myGame));
            }
        });
        stage.addActor(buttonPlay);
        stage.addActor(buttonInst);
        stage.addActor(buttonInfo);
        stage.addActor(buttonSalir);
    }
    @Override
    public void show() {
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0.2f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        camera.update();
        myGame.batch.setProjectionMatrix(camera.combined);
        myGame.batch.begin();
        myGame.batch.draw(backgroundTexture, 0, 0);
        stage.draw();
        myGame.batch.end();
        }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {

    }
}

我添加了几个按钮和背景图像。该图像位于资源文件夹中,但它没有显示。

我对矩形有疑问,如果有办法将图像添加到Rectangle对象,就像设置x,y,height,width一样?

1 个答案:

答案 0 :(得分:0)

一个舞台拥有它自己的批处理,它将调用begin()和end(),除非你专门设置阶段使用相同的批处理,否则begin()和end()调用将发生冲突。

但是您也可能想要清理代码,因为您创建了一个后台精灵但没有使用它。我建议使用它而不是直接绘制纹理(因为精灵也可以有一个位置和你可以操作的其他属性)。