2017-06-17 8 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ボタンの上への効果なし

+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()関数がありますが、保護されているので、Stageを使用して行う必要があります。だからここ

は、uは何をすべきかです:

  1. は、ステージを作成します。
  2. ボタンをステージに追加します。
  3. レンダリング機能でstage.draw()を呼び出します。

    ... 
    Stage stage = new Stage(); 
    //create button 
    stage.addActor(playButton); 
    ... 
    
    
    @Override 
    public void render() {  
        stage.draw(); 
    } 
    
関連する問題