Gerar um Delay?

Olá a todos,

Estou fazendo um jogo simples em Java, chamado Tron, acredito que ja existam varias versões em Java, mais foi a forma que encontrei de aprender mais JAVA. Estou fazendo todos os exemplos do Livro CoreJava, e com o conhecimento adquirido venho fazendo o programa.

Minha duvida é a seguinte, estou fazendo uma explosão, claro muito simples, para quando a moto colidir com uma parede. A explosão são varias Elipses que vão crescendo de tamanho, onde existe um comando for que é incrementado aumento o tamanho do desenho da nova Ellipse, após o incremento acrescento a Elipse em ArrayList, em seguida um repaint(). O que gostaria de saber é como posso gerar um delay antes de cada repaint()?

Tentei fazer de uma forma no minimo estranha… ou pior, desculpem, mais foi acrescentando um outro comando for com um “;” no final, porém não funcionou, alguem pode dar uma dica ?

Olá,

Experimente isto, após o repaint():

// faz um intervalo de 0,5 segundos (500 milionesimos de segundo) entre cada execução
try
{
Thread.sleep (500);
} catch (InterruptedException e) {};

Um abraço,

Tem um artigo bem completo sobre isso aqui:
http://java.sun.com/developer/technicalArticles/Media/timing/index.html

Ele usa a classe java.util.Timer ou a javax.swing.Timer. A diferença é que a última usa a thread do swing.

Adaptei esse código do artigo:

class MyActionListener extends ActionListener {
        public void actionPerformed(ActionEvent e) {
            // Aqui vai o que fazer a cada atualização
        }
}

    resolution = 30;          // atualiza a cada 30 seg.
    begin = 50;               // espera 50 ms até começar
    ActionListener myActionListener = new MyActionListener();
    Timer timer = new Timer(resolution, myActionListener);
    timer.setInitialDelay(begin);