2017-06-17 67 views
0
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状态没有按钮背景变化(向下)。我错在哪里?libgdx button up down no effect

+0

我测试了你的代码,一切正常工作正常 – Aryan

回答

1

我测试你的代码,这是工作的罚款。添加完整的文本代码:

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() 
    } 
} 
0

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

因此,这里是什么ü做:

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

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