2013-08-11 13 views
6

私のlibgdx gameには、menulistという2つの画面があります。 menu画面のlabelをクリックすると、setscreen(list)が表示されます。 新しい画面が表示され、ラベルとともにメニュー画面が消えます。Libgdx:別の画面を設定しても、古い画面のボタンはまだアクティブです

しかし、私が同じ位置をクリックしたとき(ラベルがあったメニュー画面から、もちろんそれらのラベルが画面を変更したために表示されない)、クリックイベントが応答します。どうして?

注:現在、私のリスト画面には、どのウィジェットのイベントハンドラもありません。

古い画面を無効にするには、setscreen(anotherscreen)以上の何かをする必要がありますか?

答えて

13

私はこの変更された:私は唯一のコンストラクタでこれを設定する前に、私はその画面

public void show() { 
    ... 
    Gdx.input.setInputProcessor(stage); 

} 

のステージ変数を使用して、その画面の表示()メソッドへの入力処理を移動

を画面を変更していても、入力プロセッサーは最後に作成された画面のステージにアタッチされていました。

+1

これは私のために働いた。どうやって一緒に働くのか、どうして少し説明できますか? – user5493029

2

2番目の画面でInputProcessorを使用していないためです。

私の解決策は、setScreenの後にInputprocessorをnullに設定することでした。

Gdx.app.getApplicationListener().setScreen(new Screen()); Gdx.input.setInputProcessor(null);

0

はちょうどこの上で、私の頭を壊しました。私はshowメソッドの画面を変更しましたが、それ以降はGdx.input.setInputProcessor(stage)が呼び出されました。新しい画面のshowメソッドが実行された後もまだ完了しているメソッドが実行され、前のステージに戻ります。

画面を変更する前にGdx.input.setInputProcessor(stage)に電話をかけるか、画面を変更した後にreturnに電話してください。

関連する問題