Обновить графику с помощью repaint() в методе run()?

У меня проблема с обновлением экрана в этой игре Pong здесь. Метод run() рисует фигуры в графике (myBuffer), которая затем рисуется в буферизованном изображении (myImage). Я реализую метод run() для потоков, чтобы лопасти могли двигаться одновременно.

Я знаю, что другие классы (мяч, бампер1, бампер2) работают в этой программе, потому что я сделал Pong, используя те же команды в этом файле, но без метода run(). Я использовал прослушиватель в предыдущем, и он обновлялся и обновлялся нормально (просто раздражало, что клавиши весла мешают друг другу! :/)

Я предполагаю, что либо 1) поток не выполняется (маловероятно, но не уверен), либо 2) то, как я использую repaint(), не работает в потоке, либо 3) я упускаю что-то очевидное. :}


person Zchpyvr    schedule 18.04.2012    source источник


Ответы (1)


Поток выполняет метод run() только один раз. Для повторного выполнения блока вы можете использовать бесконечный цикл:

public void run() {
    for (;;) {
        // your code
    }
}
person Joni    schedule 18.04.2012
comment
Это было именно то, что мне было нужно! Вместо цикла for я поставил цикл while, и все заработало. Спасибо. - person Zchpyvr; 19.04.2012