无法更改演员在屏幕上的位置

时间:2018-11-15 21:52:12

标签: android libgdx

我希望使用LibGDX自定义在菜单屏幕上的按钮位置,因此我将按钮直接添加到了舞台上,但是按钮未完全保持在我指定的位置。他断断续续地超出了屏幕的0 x位置。是什么原因造成的?用ShapeRender绘制一条线,该线似乎遵循指定的确切位置。

16/11/2018 09:23 构造函数

public Menu(Jogo jogo) {
    this.jogo = jogo;


    this.camera = new OrthographicCamera();
    this.camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.position.set(0,0,0);
    viewport = new ScreenViewport(camera);

    estagio = new Stage(viewport);
    System.out.println(viewport.getScreenX());
    System.out.println("Posicao c:" +camera.position.x);
    camera.position.set(0,0,0);
    camera.update();
    Gdx.input.setInputProcessor(estagio);
    des = new ShapeRenderer();
    yLinha = 320 - 39;

    // botaoNovo = new TextButton("Novo", new Skin());
}

显示方法:

 @Override
public void show() {
    //   Table tabela = new Table();
    // tabela.setFillParent(true);
    // tabela.setDebug(true);
    // estagio.addActor(tabela);

    Skin skin = new Skin(Gdx.files.internal("skin/clean-crispy-ui.json"));

    botaoNovo = new TextButton("Novo jogo", skin);
   estagio.addActor(botaoNovo);
  //  Vector2 cordS = viewport.unproject(new Vector2(11,50));//estagio.screenToStageCoordinates(new Vector2(11, 50));

//    System.out.println("Estagio x 11:" + cordS.x);
    botaoNovo.setPosition(40, 320-50);
    botaoNovo.setWidth(largura);
    System.out.println(botaoNovo.getX());
    botaoNovo.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            jogo.setScreen(new TelaJogo(jogo));
        }
    });
}

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();

    jogo.batch.setProjectionMatrix(camera.combined);
    jogo.batch.begin();
    //Etim que largura = 50
    jogo.fontB.draw(jogo.batch, "JI Zabelê", (240 - 50) / 2, 320 - 20);
    jogo.batch.end();

    if (estado == INICIANDO) {
        des.setProjectionMatrix(camera.combined);
        des.begin(ShapeRenderer.ShapeType.Line);
        des.setColor(0, 1, 0, 0);
        des.line(10, 320 - 40, 10, yLinha);
        yLinha--;
        if (yLinha == 320 - 80) {
            System.out.println("Linha completa. iniciar botões");
            estado = CRESCENDO_BOTOES;
        }
        des.end();
    } else if (estado == CRESCENDO_BOTOES) {
        botaoNovo.setWidth(largura);
        largura++;
        estagio.act();
        estagio.draw();
//jogo.batch.begin();
//botaoNovo.draw(jogo.batch,0);
//jogo.batch.end();
        if (largura == 60) ;
        estado = 2;
    } else if (estado == 2) {
//          jogo.batch.begin();
//          botaoNovo.draw(jogo.batch,0);
//          jogo.batch.end();
        estagio.act();
        estagio.draw();
    }


//        if (Gdx.input.isTouched()) {
//            this.jogo.setScreen(new TelaJogo(jogo));
//        }
}

0 个答案:

没有答案