Thread.sleep() работает не так, как надо

176
09 января 2019, 11:00

Пишу пошаговую 2D игру, где персонаж передвигается в строго заданном направлении по клеткам поля. Использую MouseListener. При нажатии правой кнопки мыши вызывается метод pressRightButton() из класса Game(game - объект класса Game, в котором описаны методы, отвечающие за передвижение персонажа), который отвечает за определенную последовательность действий: в данном случае совершает 2 шага вперед, с задержкой между шагами 2 секунды.

Вопрос состоит в том, что при нажатии правой кнопки мыши первым делом выполняется задержка в 2 секунды, а затем 2 раза выполняется метод moveForward() без всякой задержки между ними. Почему так происходит и как сделать так, чтобы задержка происходила между методами?

panel.addMouseListener(new MouseAdapter(){
    @Override
    public void mousePressed(MouseEvent e) {
        if(e.getButton() == MouseEvent.BUTTON3)
            game.pressRightButton();
    }
}

Метод pressRightButton():

public void pressRightButton() {
    moveForward();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException ex) { };
    moveForward();
}
READ ALSO
Чтение атрибутов из MANIFEST.MF

Чтение атрибутов из MANIFEST.MF

При компиляции Java приложения вписываются данные в MANIFESTMF файл которые потом должны использоваться при запуске приложения

187
Порядок фильтров в сервлетах без web.xml

Порядок фильтров в сервлетах без web.xml

Есть 3 фильтра: Filter1, Filter2, Filter3Каждый из них помечен аннотацией @WebFilter("/main")

158
Не передается extras через Intent

Не передается extras через Intent

Мне нужно выполнить определенные действия в активити запущенном через Intent, но по каким то причинам информация присоединенная к интенту (в которой...

171
Создание задач и их обработка

Создание задач и их обработка

Необходимо организовать рассылку почты следующим образомПредположительно что модуль рассылки является частью существующего приложения

179