libgdx渲染sprite而另一个导致sprite消失

时间:2014-03-20 02:54:10

标签: java libgdx

问题http://imgur.com/ZNpHiiu的图像所以我成功地为我的游戏渲染了一个背景,现在我试图在它上面渲染一些精灵,屏幕全部搞砸了大蓝L。

代码主

public class WizardGame extends Game {
public static final String TITLE = "Are you a bad enough wizard to save the princess?!", VERISION = "0.0.0.0.PREALPHA";
PlayTest pt = new PlayTest();
private FPSLogger fps;
public void create() {  
    Gdx.gl20.glClearColor(0, 0, 0, 1);
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    fps = new FPSLogger();
    fps.log();
    pt.create();
}

public void dispose() {
super.dispose();
}

public void render() {      
    super.render();
    pt.render();
}

public void resize(int width, int height) {
super.resize(width, height);
}

public void pause() {
    super.pause();
}

public void resume() {
super.resume();
}

}

playtest代码

public class PlayTest implements Screen  {

private TextureAtlas atlas;
private AtlasRegion floor;
private SpriteBatch batch;
private OrthographicCamera camera;
private Sprite background;
private BitmapFont font;
private String fps;
Blocks block = new Blocks();
public void render() {
    Gdx.gl20.glClearColor(0, 0, 05, 1);
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    background.setBounds(0, 0, 720, 1280);
    background.draw(batch);
    block.renderBlocks();
    batch.end();
}

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

}

public void show() {
}

public void hide() {

}

public void pause() {

}

public void resume() {

}

public void dispose() {
    atlas.dispose();
    batch.dispose();
}

public void create() {
    atlas = new TextureAtlas(Gdx.files.internal("data/wizardpack.pack"));
    floor = atlas.findRegion("Backfloor");
    background = new Sprite(floor);
    batch = new SpriteBatch();
    font = new BitmapFont(Gdx.files.internal("data/magicdebug48.fnt"));
    block.create();

}

@Override
public void render(float delta) {
    // TODO Auto-generated method stub

}

}

块代码

public class Blocks extends Game {
private TextureAtlas atlas;
private SpriteBatch batch;
private AtlasRegion sword,shield,staff,fireball,iceball;
private Sprite sprSword,sprShield,sprStaff,sprFireball,sprIceball;
@Override
public void create() {
    atlas = new TextureAtlas(Gdx.files.internal("data/wizardpack.pack"));
    batch = new SpriteBatch();
    sword = atlas.findRegion("Sword");
    shield = atlas.findRegion("Shield");
    staff = atlas.findRegion("Staff");
    fireball = atlas.findRegion("flame");
    iceball = atlas.findRegion("icespell");
    sprSword = new Sprite(sword);
    sprShield = new Sprite(shield);
    sprStaff = new Sprite(staff);
    sprFireball = new Sprite(fireball);
    sprIceball = new Sprite(iceball);

}

public void renderBlocks(){
    Gdx.gl20.glClearColor(0, 0, 05, 1);
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    batch.draw(sword, 0, 0, 0, 0, 32, 32, 1, 1, 0);
    //sprShield.setBounds(15, 15, 32, 32);
//  sprShield.draw(batch);
    batch.end();
}
public void dispose(){
    atlas.dispose();
    batch.dispose();
}

}

1 个答案:

答案 0 :(得分:0)

我修复了它:D对renderBlocks的调用必须在批处理结束之后。