2015-05-29 2 views
0

Я хочу объединить следующие две кнопки (button1 & button2) в один метод clicked() , который похож на Android с помощью v.getId().LibGDX - Как объединить метод Clicked() от двух кликов в LibGDX, похожих на Android?

В LibGDX:

button1.addListener(new ClickListener(){ 
@Override 
public void clicked(InputEvent event, float x, float y){ 
button1.setText("It was the first button.");      
} 
}); 

button2.addListener(new ClickListener(){ 
@Override 
public void clicked(InputEvent event, float x, float y){ 
button2.setText("It was the second button.");     
} 
}); 

В Android:

View.OnClickListener action = new View.OnClickListener() { 
    public void onClick(View v) { 
     switch(v.getId()) { 
     case R.id.button1: 
      // It was the first button. 
      break; 
     case R.id.button2: 
      // It was the second button. 
      break; 
     } 
    } 
} 

Спасибо за ответ.

ответ

2

Вы можете получить актер (в данном случае кнопку), а затем делать, если-иначе заявления, чтобы получить подобное поведение. Этот прослушиватель кликов может быть назначен каждой из ваших кнопок. Если вы делаете это без сохранения кнопок в переменных-членах, вам нужно сначала объявить кнопки и сделать их окончательными.

ClickListener clickListener = new ClickListener(){ 
    public void clicked(InputEvent event, float x, float y){ 
     Actor actor = event.getListenerActor(); 
     if (actor == button1) doButton1Action(); 
     else if (actor == button2) doButton2Action(); 
     else if (actor == button3) doButton3Action(); 
    } 
} 

Вы также можете сделать это с помощью прослушивателя изменений, и это немного проще.

ChangeListener changeListener = new ChangeListener(){ 
    public void changed (ChangeEvent event, Actor actor) { 
     if (actor == button1) doButton1Action(); 
     else if (actor == button2) doButton2Action(); 
     else if (actor == button3) doButton3Action(); 
    } 
} 
1

Я думаю, что проще иметь два ClickListeners, но вы можете добавить слушателя в представление, содержащее кнопки (или Stage или любой объект, в котором находятся кнопки), и в методе clicked() проверьте, какая кнопка (x, y) координата монеты:

new ClickListener() { 
    @Override 
    public void clicked(InputEvent event, float x, float y) { 
     if (x > button1.x && x < button1.x + button1.width 
      && y > button1.y && y < button1.y+button1.height) { 
      // button 1 was pressed 
     } 
     // similar for button2 
} 
+0

Спасибо, есть ли идентификатор, который я могу назвать похожим на Android? – user1232250

+1

Вы можете использовать setName (String), чтобы дать вашим кнопкам уникальные идентификационные имена, а затем использовать getName(), чтобы проверить их. Это работает для любого актера в LibGDX. – Tekkerue

Смежные вопросы