2016-03-24 10 views
0

私はいくつかの友人とゲームを作りました。私は現在、メインメニューで作業しています。私は通常の古いTextButtonsを取得する方法を考え出しましたが、ImageTextButtonsは私に非常に苦労しています。私は2つのマイク画像を持っています.1つはオン、もう1つはオフです。ユーザーがクリックすると、それが変わるはずです。上のmuteButtons.packが含まれていImageTextButton LibGDX

Private skin = new Skin; 
TextureAtlas buttonAtlas = new TextureAtlas ("mutebuttons.pack"); 
skin.addRegions(buttonAtlas); 
TextButtonStyle buttonStyle = new TextButtonStyle(); 
ImageTextButtonStyle buttonStyle2 = new ImageTextButtonStyle(); 
buttonStyle.up = skin.getDrawable("soundIconON"); 
buttonStyle.down = skin.getDrawable("soundIconOFF"); 

MenuStateクラス -

と次のように https://www.youtube.com/watch?v=YPxd_xbnIpk

私が使用してきた数々の解決策の一つがある:私はこのチュートリアルの一環として、テクスチャパッキングプログラムを使用しました既にマイク画像をオフにしています(soundIconON/OFF)。

詳細情報が必要な場合はお知らせください。事前にお礼を言います。 Ed

+0

あなたが投稿したコードは、ソースのいくつかの異なる場所から切り取って貼り付けられたように見えます。何が間違っているかは言わなかったので、助けてくれるものはあまりありません。とにかく、ImageTextButtonの代わりにCheckBoxを使用したいと思います。次に、2つのマイク画像を1つのスタイルに入れて、自動的に切り替えることができます。 – Tenfour04

答えて

1

ボタンは自動的に自己確認します。特別なことを行う必要はなく、チェックされた状態はいつでも.isCheckedで取得できます。デフォルトではボタンのチェックが外されていますが、ボタンを作成したときにそのボタンをsetChecked(true)で変更することができます。

チェック状態に応じてボタンの外観を変更したい場合は、ドロアブルを追加するだけです。内部的にはIf no checked state image just use default imageのようになります。

ボタンのタイプについては、画像ボタンだけでも問題はありませんが、どのボタンでも変更可能な外観のボタンを作成できます。 ImageButtonでは、ボタンの背景にイメージを追加することができます。これらは3種類のボタンのスタイルです:

TextButton.TextButtonStyle textButtonStyle = 
      new TextButton.TextButtonStyle(
        Drawable up, //Background for up state 
        Drawable down, //background for down state 
        Drawable checked, //background for checked == true 
        BitmapFont font); //font 

    ImageButton.ImageButtonStyle imageButtonStyle = 
      new ImageButton.ImageButtonStyle(
        Drawable up, 
        Drawable down, 
        Drawable checked, 
        Drawable imageUp, //Image for up state 
        Drawable imageDown, //Image for down state 
        Drawable imageChecked, //Image for checked == true 
        BitmapFont font); 

    //Never actually used this one, you made me aware of it's excistance. I think this is a redundant class. 
    ImageTextButton.ImageTextButtonStyle imageTextButtonStyle = 
      new ImageTextButton.ImageTextButtonStyle(
        Drawable up, 
        Drawable down, 
        Drawable checked, 
        BitmapFont font); 

したがって、チェックされたドロウアブルを設定してボタンをクリックするだけです。

これらはスキンファイルでも設定できます。適切な描画可能な名前をjsonから呼び出します。これは、テキストボタンを使用して単純なトグルボタンを作成する方法です。

com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: 
    { 
    default: { up: my_up_button, checked: my_checked_button, font: default-font, fontColor: white } 
    } 

テキストを上に置かない場合は、空の文字列を渡します。代わりに、クリックのテキストを変更することもできます。

final TextButton button = new TextButton("Ewwww! Touch me!", skin); 
    button.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      super.clicked(event, x, y); 
      if (button.isChecked()) 
      { 
       button.setText("Now I am unchecked!"); 
      } 
      else 
      { 
       button.setText("Now I am checked!"); 
      } 
     } 
    });