libgdx中的render无法更新要绘制的新值

时间:2014-02-18 16:22:17

标签: android libgdx

我刚刚启动libgdx,这看起来很简单,但我不明白。 我在屏幕对象中的render方法将从WorldRenderer调用render方法:

public World world;
public void render() {

    spriteBatch.begin();
        drawBlocks();
        drawBob();
    spriteBatch.end();
    if (debug)
        drawDebug();
}
private void drawBob() {
    Bob bob = this.world.getBob();
    Log.e("inside drawBob",this.world.getBob().getPosition().x  +"dadas");
    bobFrame = bob.isFacingLeft() ? bobIdleLeft : bobIdleRight;
    if(bob.getState().equals(State.WALKING)) {
        bobFrame = bob.isFacingLeft() ? walkLeftAnimation.getKeyFrame(bob.getStateTime(), true) : walkRightAnimation.getKeyFrame(bob.getStateTime(), true);
    }
    spriteBatch.draw(bobFrame, bob.getPosition().x * ppuX, bob.getPosition().y * ppuY, Bob.SIZE * ppuX, Bob.SIZE * ppuY);

//屏幕渲染方法

void render(float delta) {
       Gdx.gl.glClearColor(0.1f, 0.1f, 0.1f, 1); 
       Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
        controller.update(delta);
        renderer.render();
         } 

我有一个updateBob方法来更新世界的bob位置。 这是控制器的更新:

    public void update(float delta) {
    processInput();
    Vector2 pos = new Vector2(7,7);
    //bob.setPosition(pos);
    bob.getPosition().x += 1;
    bob.update(delta);
}

应用程序create()方法

    public void create() {
    setScreen(new GameScreen());
    world = new World();
    renderer = new WorldRenderer(world, true);
    controller = new WorldController(world);
    //Gdx.input.setInputProcessor(this);
}

在方法内部,我更新了它并且值发生了变化。但是鲍勃在渲染中的位置并没有改变,所以我无法让鲍勃移动。 请告诉我哪里出错了。

1 个答案:

答案 0 :(得分:1)

在聊天讨论后我们发现了问题。如果您覆盖render()中的ApplicationListener,则必须致电super.render()以确保调用render(float delta)中的Screenpause()以及ApplicationListener的其他方法也应该相同。