2016-05-10 7 views
0

私はアイドルゲームを作っていますが、今はHUDのリスナーを作る方法がわかりません。 my hudのすべてのボタンでInputListener()をインスタンス化するのは大丈夫ですか? 20のボタンや俳優のように触れることができます。LibGDX-Scene2D:複数のボタンで蝶を作る方法は?

+0

なぜですか?....... – Tenfour04

+0

これは唯一の選択肢ですか? InputListenerクラスのtouchDownメソッドから 'button'の変数と関数にアクセスする必要があるため(私はアクセスできますが、パラメータを渡すか、InputListenerなどを拡張する内部クラスを作成する必要があります)。これはコードのようなもので、拡張されたInputListenerクラスをインスタンス化する20個のボタンと、ボタンごとに独自のコードを持つすべてのクラスを想像してください。 –

+0

あなたの問題を本当に理解できません。複雑なセットアップがあるようです。リスナーは 'touchDown'の中で一つのメソッドを呼び出すだけです。代わりに、すべてのボタンに同じリスナーを割り当てて、 'touchDown'メソッドですべてのボタンに対して' event.getListenerActor() 'をチェックさせて、どのメソッドを呼び出すかを決めることができます。あなたのボタンがOSのボタンのように動作するようにするには(ボタンからドラッグして離して解除する)、InputListenerの代わりにChangeListenerを使用し、 'touchDown'の代わりに' changed'を使用して応答します。 – Tenfour04

答えて

1

clicableになりたいすべての俳優に対して、単にaddListener()メソッドを使用してください。私はこの目的のためにClickListenerを使用していましたが、ボタンが無効になっているときのより良い振る舞いのためにChangeListenerを使用することが推奨されることがあります。

だから、あなたが何をする必要があるかだけ

Button button; 

    //creating button... 

    button.addListener(new ClickListener(){ 
     @Override 
     public void clicked(InputEvent event, float x, float y) 
     { 
      //Do something 
     } 
    }); 

とあなたのHUDステージ上の別のボタン/役者でも同じです。

take a look at this threadでも、多くのリスナーのパフォーマンスについて質問しています。

+0

そのスレッドは私に多くの助けになりました、ありがとう –

1

これは本当に使いやすいscene2dボタンです。問題の内容を理解していないか、各ボタンやUIオブジェクトにリスナーを置くことを心配している理由はわかりません。

button = new Button(buttonStyle); 
    button.setPosition(x, y); 
    button.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      Gdx.app.log(TAG, "Button clicked"); 
     }; 
    }); 
関連する問題