当前位置: 首页 > 知识库问答 >
问题:

在libgdx中呈现无法更新要绘制的新值

刘弘新
2023-03-14

我只是启动libgdx,这看起来很简单,但我不明白。screen对象中的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();
         } 
    public void update(float delta) {
    processInput();
    Vector2 pos = new Vector2(7,7);
    //bob.setPosition(pos);
    bob.getPosition().x += 1;
    bob.update(delta);
}
    public void create() {
    setScreen(new GameScreen());
    world = new World();
    renderer = new WorldRenderer(world, true);
    controller = new WorldController(world);
    //Gdx.input.setInputProcessor(this);
}

共有1个答案

东典
2023-03-14

经过聊天中的讨论,我们发现了问题。如果在applicationlistener中重写render(),则必须调用super.render(),以确保调用screen中的render(float delta)。对于pause()applicationlistenerto的其他方法也应该如此。

 类似资料:
  • 我试图学习libGDX游戏开发的一些简单原则,并在下面的代码中获得了吸吮。我已经将更新和渲染的任务分开,但不太确定如何将它们放在一起。我所要做的就是绘制一个在屏幕上移动的简单矩形。我的代码如下所示。除了渲染,一切都正常。 使用的呈现方法:

  • 我试图用libGdx和MVC模式制作一个游戏。我有一个我的游戏模型,我打算一直运行,而不是我的渲染方法从应用程序。因此,我在从libgdx扩展Game的类中做了这样的工作:首先,我将连续呈现设置为false,为了调用呈现方法,我使用gamescreen作为模型的监听器。

  • 我是一个初学者React开发人员,我对这个特定的代码片段有一个问题。 问题: 虽然我直接复制了虚拟数据的值并将其作为单独的子项呈现,但并不是所有的虚拟数据都被呈现 我特意选择使用useRef而不是useState,因为在用户添加或编辑他们想要的任何链接之后,我想将keyRef发送到NoSQL数据库;然而,当我使用useState()时,它给了我陈旧的状态问题,其中包含所有链接的数组没有不断更新。

  • 编辑:当我拖动边框时,某种刷新被发送,我需要弄清楚并手动发送相同的刷新。 请注意,我已经尝试使用revalidate()和repaint()。 当使用JFrame和JPanel来显示一个框架时,我试图使框架的大小易于改变。 null 此外,一个重要的注意事项是,当您拖动边框时,白条会消失,并正确地重新加载/刷新内容(即使您只是少量拖动)

  • 我想我不明白render方法是如何工作的。 从我在网上读到的/在youtube教程上看到的,我发现render方法是一个循环函数,您可以使用它来保持游戏的更新和读取用户的输入。当您想要在屏幕中绘制一些东西时,您可以使用此方法,并且在绘制任何东西之前清除屏幕。 但是如果我想要静止地绘制一些东西,那么在render方法之外绘制它不是更好吗(这样计算机就不必多次清除屏幕并重新绘制所有东西)?我错过了什么

  • 我创建了一个程序,只需在屏幕上移动一个球。我以前把它都放在一节课上,但我觉得它看起来太乱了,所以我把它分成了三个不同的课:主课。。。初始化一切,游戏。。。它描绘一切,是一个JPanel,AL是一个KeyListener(这也是问题所在)。问题是,我无法让程序从我的AL类重新绘制,无论我试图传递什么。有人能帮忙吗?以下是我的三门课: - -