2015-04-17 2 views
0

J'essaie de faire grandir mon cercle. Quand il est créé, je veux qu'il commence à partir d'une taille, et disparaisse quand il atteint une taille maximale. Mon cercle est censé représenter une sorte d'explosion.Comment faire grandir un cercle?

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); 
}} 

Donc, comme vous pouvez le voir, c'est un cercle très basique. Et je veux juste créer cette petite animation.

+3

Utilisez un 'Timer' Swing pour ajuster la' size', puis appelez 'repaint()'. Il y a beaucoup de [exemples autour du site] (http://stackoverflow.com/questions/tagged/swing+timer). –

+3

Je vote pour clore cette question hors-sujet car il s'agit d'un sujet bien couvert dans le tutoriel officiel, dans [Comment utiliser les Timers Swing] (https://docs.oracle.com/javase/tutorial/uiswing /misc/timer.html). –

Répondre

0

Je vous recommande de créer une classe pour l'explosion afin de stocker sa position et sa taille actuelle sur les images de rendu. Pour faire grossir le cercle, il vous suffit de soustraire le nombre de pixels souhaité (en pixels) de sa position, ce qui donnera les coordonnées x et y pour le fillOval, les arguments width et height seront la taille. par exemple

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

Vous pouvez ensuite coupler cela avec une condition telle que radius > 100 de décider si l'explosion est terminée - alors ne le rendre.