【问题标题】:TextButton isPressed() not workingTextButton isPressed()不起作用
【发布时间】:2016-05-28 00:45:12
【问题描述】:

我遇到了scene2d 的问题。我以编程方式创建了一个 TextButton(没有 json 文件),由于某种原因,当我按下它时 isPressed() 不会返回 true。不仅如此,我还设置了 TextButtonStyle 的 downFontColor,但它也没有做任何事情。这是我第一次使用scene2d,所以我还是新手。我正在android上测试。

我使用了一个扩展TextButton的自定义类,它与问题无关,它只是一个空类。不要让我在一个文本按钮上测试它。这是课程:

MainMenu,我在其中创建舞台:

public MainMenu(Main main) {

    this.main = main;

    font_neutral = Tools.generateFont(Gdx.files.internal("Fonts/Android.ttf"), Color.WHITE, 150);

    initViewport();

    //Scene2D
    GlyphLayout glyphLayout = new GlyphLayout(); //Used for getting width/height of textButton. Set text, then get width

    TextButton.TextButtonStyle style = new TextButton.TextButtonStyle();
    style.font = font_neutral;
    style.fontColor = new Color(1, 1, 1, 1);
    style.downFontColor = new Color(40, 130, 100, 1);
    style.checkedFontColor = Color.BLUE;

    CustomTextButton button_play = new CustomTextButton("Play", style);
    glyphLayout.setText(style.font, "Play");
    float x = camera.viewportWidth / 3 - glyphLayout.width / 2;
    float y = camera.viewportHeight / 2 - glyphLayout.height / 2;
    button_play.setPosition(x, y);
    button_play.setTouchable(Touchable.enabled);

    stage = new Stage(viewport);
    stage.addActor(button_play);
}

@Override
public void show() {

}

public void update(float delta) {

    stage.act(delta);


}

@Override
public void render(float delta) {
    update(delta);

    Gdx.gl.glClearColor(1, 1, 1, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    Gdx.gl.glEnable(GL20.GL_BLEND);

    stage.draw();

}

再次感谢!

【问题讨论】:

  • 您到底在哪里使用.isPressed()?我在您的代码中没有看到它。

标签: java android libgdx scene2d


【解决方案1】:

Stage 是一个InputProcessor,你需要告诉 LibGDX 去听Stage。在初始化您的Stage 之后输入Gdx.input.setInputProcessor(stage)。

【讨论】:

  • 非常感谢您再次帮助我!这些小事往往会吸引我
  • 但是,还是有问题。单击有效,但似乎即使我更改 TextButtonStyle 中的颜色,它也会保持我设置的原始字体的颜色。所以即使我设置了TextButtonStyle.color,它仍然只会是黑色的。
  • 有趣的是,设置样式的颜色仅在我使用预制颜色(例如 Color.GREEN)时才有效,如果我创建新的 Color(),它就不起作用.很奇怪。
  • 好的,当我使用十六进制值创建颜色时,它可以工作。不知道为什么。
  • 很高兴能帮上忙。 ImageTextButton 或任何显示文本的Actor 使用BitmapFontCache。过去我在更改BitmapFontCache 的颜色时也遇到了麻烦,我不确定什么是固溶体。您也许可以尝试button.getLabel().setColor() 而不是重置整个样式。
猜你喜欢
  • 2021-05-08
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多