Удерживание кнопки будет выполнять действие до тех пор, пока оно не будет выпущено

#java #android #libgdx

#java #Android #libgdx

Вопрос:

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

ССЫЛКА: http://www.youtube.com/watch?v=-b2LunJPXC0 (название игры — Siren Fantasia)

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

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

Вот пример кода, который я уже создал:

 float delay = 2f;

button.addListener(new ClickListener() {
        @Override
        public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
            if(pointer == 0) {
                Timer.schedule(new Task(){
                    @Override
                    public void run() {

                        int counter = 0;

                        do{
                            Timer.schedule(new Task() {
                                @Override
                                public void run() {
                                    button2.setVisible(false);
                                }

                            }, delay);

                            Timer.schedule(new Task() {
                                @Override
                                public void run() {
                                    button2.setVisible(true);
                                }

                            }, delay);

                         }while( counter >= 1 );

                    }
                }, buttonDelay);
            }
            return false;
        }
    });
  

И результат не тот, который я хотел, чтобы это было. Когда я удерживаю кнопку, для button2 не устанавливаются значения visible (ложь) и visible (истина). Но когда я продолжал удерживать ее снова и снова, иногда это срабатывало.

Мне действительно нужна помощь. Спасибо.

Комментарии:

1. Когда counter увеличивается? У вас есть, while counter >=1 но вы инициируете его с помощью counter=0 , и оно вообще не увеличивается. Кроме того, у меня есть идея, вместо того чтобы выполнять 2 задачи, почему бы вам не проверить внутри задачи, видна ли кнопка, затем сделать ее невидимой, и наоборот.

2. Ах да, я немного забыл об этом, спасибо! Теперь я меняю цикл на a while (true), чтобы он был бесконечным. Есть ли способ использовать бесконечный цикл без замораживания программы?