libgdx button up down没有效果

val playTexture = assetManager?.get(A.image.gamePlayBtn, Texture::class.java) val skin: Skin = Skin() skin.add("up", TextureRegion(playTexture, 0, 0, 296, 96)) skin.add("down", TextureRegion(playTexture, 0, 96, 296, 96)) val playButton: ImageTextButton = ImageTextButton("PLAY THE GAME", with(ImageTextButton.ImageTextButtonStyle()) { up = skin.getDrawable("up") down = skin.getDrawable("down") font = BitmapFont() font.data.setScale(3f) font.color = Color.ORANGE this }) 

OnClick事件工作正常,但没有onClicked状态的按钮背景变化(向下)。 我哪里错了?

我已经测试了你的代码,这工作正常。 添加完整的文本代码:

 class Main : ApplicationAdapter(){ internal lateinit var stage: Stage override fun create() { stage= Stage() stage.setDebugAll(true) Gdx.input.setInputProcessor(stage) var skin= Skin() var tex1 =Texture("badlogic.jpg") skin.add("up", TextureRegion(tex1, 0, 0, 100, 50)) skin.add("down", TextureRegion(tex1, 0, 96, 100, 50)) var playButton: ImageTextButton = ImageTextButton("Play The Game", with(ImageTextButton.ImageTextButtonStyle()){ up = skin.getDrawable("up") down = skin.getDrawable("down") font = BitmapFont() font.data.setScale(3f) font.color = Color.ORANGE this }); playButton.setPosition(0F,100F) playButton.addListener(object : ClickListener(){ override fun clicked(event: InputEvent?, x: Float, y: Float) { print("clicked") super.clicked(event, x, y) } }) stage.addActor(playButton) } override fun render() { Gdx.gl.glClearColor(1f, 0f, 0f, 1f) Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) stage.draw() stage.act() } } 

你必须更新你的按钮。 有updateImage()函数,但它的保护,所以你必须使用阶段。

所以这是你做的:

  1. 创建阶段。
  2. 将您的按钮添加到舞台。
  3. 在render函数中调用stage.draw()。

     ... Stage stage = new Stage(); //create button stage.addActor(playButton); ... @Override public void render() { stage.draw(); }