Movendo objetos e cronômetros
Eu tenho uma tela com digamos 500 de largura e 400 de altura e tenho um vetor com várias formas. digamos que o vetor tenha 2 formas diferentes, por exemplo. Eu quero que o objeto apareça aleatoriamente na parte inferior da tela, atinja uma certa subida e depois desça (semelhante ao ninja de caça, onde as frutas são minhas formas).
No meu principal (view), tenho um vetor de formas das quais instanciamos os timers, adiciono ao array e os coloco no fundo da tela usando a função translate. Meu cronômetro capta um ouvinte de ação que basicamente altera a conversão da forma para subir até a subida e depois para baixo, mas meu problema é que todas as formas começam ao mesmo tempo, independentemente.
Algo assim:
Shape f = new Shape(new Area(new Ellipse2D.Double(0, 50, 50, 50)));
f.translate(0, 400);
f.timer = new Timer( 10 , taskPerformer);
f.timer.start();
vector.add(f);
Shape f2 = new Shape(new Area(new Rectangle2D.Double(0, 50, 50, 50)));
f2.translate(200, 400);
f2.timer = new Timer( 10 , taskPerformer);
f2.timer.setInitialDelay(5000);
f2.timer.start();
vector.add(f2);
e meu ouvinte de ação:
Random generator = new Random();
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
for (Shape s : model.getShapes()) {
// Scale object using translate
// once reached ascent drop down
// translate to diffrenet part of the bottom of the screen
// delay its timer
}
update();
//basically repaints
}
};
Estou com problemas que todas as formas seguem o mesmo cronômetro e começam a aparecer ao mesmo tempo (sem demora) ...
Alguma sugestão sobre como evitar isso ou se houver uma abordagem diferente, devo tentar