2016-06-13 4 views
0

Я пытаюсь сделать клавиатуру, и все работает нормально. Я просто хочу разбить оператор if после каждого щелчка, чтобы остановить повторяемость символа. Я не хочу использовать Boolean, потому что пользователь может вводить один и тот же символ более одного раза. Это прослушиватель изображенийBreaking If заявления .. Нажатие кнопки один раз

a = new Image(new Texture("Sprites/Keyboard/a.png")); 
    a.addListener(new InputListener(){ 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 

      apressed = true; 
      return true; 
     } 

     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 

      apressed= false; 

     } 

    }); 

И это то, что у меня есть в моем обновлении внутри действия или состояния.

@Override 
public void handleInput() { 

    if (keyboard.apressed) { 

      builder.append('A'); 
      currentWord = builder.toString(); 
      //break; here doesn't work. says its outside the loop. 

     } 
} 

Так что в теории это то, что я хочу, но не могу использовать, потому что я угадываю его, чтобы много работать на каждый символ?

@Override 
public void handleInput() { 

if (keyboard.apressed) { 

      builder.append('A'); 
      currentWord = builder.toString(); 
      try { 
       TimeUnit.MILLISECONDS.sleep(400); 

      } catch (Exception e) { 
       System.out.println("error"); 
      } 
     } 

любые идеи? заранее спасибо.

+1

Я не понимаю, о чем вы просите. Я думаю, вам нужно немного разъяснить – zapl

+0

, что вы ссылаетесь на «цикл», но я не вижу никакого цикла в вашем коде ... каждый триггер для InputListener - это одно выполнение, а не цикл. очень ясно .. – alexbt

+0

посмотрите на последний пример, и вы поймете, что я хочу делать. Если вы нажмете кнопку, он зарегистрирует более одного щелчка. Я хочу, чтобы кнопка добавляла один символ с каждым нажатием или касанием вниз, а затем прикасалась вверх. – Joe

ответ

0

Я также сделал свою собственную клавиатуру с помощью текстовых кнопок LibGDX. Поскольку вы используете изображения, а не текст, вместо этого вы можете использовать ImageButton. Затем я использовал ChangeListener с методом changed(), потому что он запускается только после нажатия и отпускания кнопки, что позволяет избежать повторяющихся символов при нажатии кнопки.

keyButton.addCaptureListener(new ChangeListener() { 
@Override 
    public void changed(ChangeEvent event, Actor actor){ 
     // key logic here