2015-04-17 4 views
0

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

public class Circle extends JComponent { 

private int size; 
private int max = 500; 

public Circle(int size) { 
    this.size = size; 
    setSize(500, 500); 
} 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.orange); 
    g.fillOval(0, 0, size, size); 
}} 

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

+3

Используйте Swing 'Timer', чтобы настроить' size', а затем вызывать 'repaint()'. Существует множество [примеров по всему сайту] (http://stackoverflow.com/questions/tagged/swing+timer). –

+3

Я голосую, чтобы закрыть этот вопрос не по теме, потому что речь идет о вопросе, хорошо освещенном в официальном учебнике, в [Как использовать таймеры Swing] (https://docs.oracle.com/javase/tutorial/uiswing /misc/timer.html). –

ответ

0

Я бы рекомендовал создать класс для взрыва, чтобы сохранить его положение и текущий размер в кадрах рендеринга. Чтобы увеличить круг, просто вычтите, сколько вы хотите, чтобы он увеличивался (в пикселях) от его положения, это даст координаты x и y для fillOval, аргументы width и height будут размером. например

g.drawOval(x - radius, y - radius, 2 * radius, 2 * radius);

Вы можете соединить это с условием, такие как radius > 100 решить, если взрыв закончил - то Dont сделать его.