2017-08-26 4 views
0

私はテーブルを持って、すべてのボタンを追加します、以下はボタンコードです、それはレベル0-9ボタンを作るために繰り返されます。ボタンをクリックすると、その番号が環境設定(環境設定)に保存され、次の画面に進みますが、すべてのボタンも環境設定(環境設定)に最後の番号(10)を保存します。どうすれば改善できますか?テーブルのClick出力を処理する方法

for (level = 0; level < 10;level++) { 
    levelbutton[level].getLabel().setFontScale(1 * witdh/540, 1 * height/960); 
    levelbutton[level].addListener(new ClickListener() { 
     public void clicked(InputEvent event, float x, float y) { 
      prefs.putInteger("Level",level); 
      prefs.flush(); 
      ((Game) Gdx.app.getApplicationListener()).setScreen(basicGame); 
     } 
    }); 
     leveltable.add(levelbutton[level]).width(170*witdh/540).height(80*height/960); 
     leveltable.row(); 
    } 
+2

*「解決済み」*のように編集しないでください。代わりに、その横にあるチェックマークをクリックして、最も役に立つと思われる回答を受け入れます。これにより、問題がシステムレベルで解決されたものとして適切にマークされます。 –

答えて

0

識別に使用できるnameデータメンバを持つActorクラスです。あなたの要件にこれを使用することができます。

for (level = 0; level < 10;level++) { 

    levelbutton[level].getLabel().setFontScale(1 * witdh/540, 1 * height/960); 
    levelbutton[level].setName(String.valueOf(level)); 
    levelbutton[level].addListener(new ClickListener() { 
     public void clicked(InputEvent event, float x, float y) { 
      Actor target = event.getTarget(); 
      String targetName = target.getName(); 
      if(targetName !=null) { 

       int levelNum=Integer.parseInt(targetName); 
       prefs.putInteger("Level",levelNum); 
       prefs.flush(); 
       ((Game) Gdx.app.getApplicationListener()).setScreen(basicGame); 
      } 
     } 
    }); 
    leveltable.add(levelbutton[level]).width(170*witdh/540).height(80*height/960); 
    leveltable.row(); 
} 

EDIT

はいgetListenerActor()リターンがリスナーの俳優を取り付けたことを、より良いオプションです。

target = event.getListenerActor(); 
+0

あなたの答えをありがとう。私はそれを に変更します。target = event.getListenerActor(); 私の状況はより安定しています。あなたのヒットをありがとう。 –

関連する問題