Заполнение (постепенно) объектов ellispe2D цветом - анимация Java - PullRequest
0 голосов
/ 17 февраля 2011

Мой вопрос прост:

1) У меня есть основной класс, который расширяет JFrame.
2) Внутри этого класса есть JPanel с BufferedImage поверх него.
3) Наконец, есть еще JButton, который я называю «Огонь». Это все для дизайна.

Вот сделка:

При нажатии кнопки есть небольшой метод, который возвращает мне массив из 5 объектов Ellipse2D. (Массив называется "точками" и по сути является массивом простых кружков ..).

Все, что я хочу сделать, когда нажимаю «Огонь» - заставить эти объекты отображаться на BufferedImage, который я называю «bf», и постепенно наполнять их цветом таким образом, чтобы это давало ощущение анимации. Какой самый простой способ сделать это?

P.S. Я пытался использовать класс Swing Timer, но проблема с этим подходом заключается в том, что я не могу передать параметры в вызов метода (внутри actionPerformed), который мне нужен, если я хочу получить свой массив через ...

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Создайте свой объект ActionListener (тот, который вы передаете в Timer), чтобы он имел доступ к данным, необходимым для выполнения анимации.Таймер - , просто , чтобы позволить ActionListener когда делать следующий шаг в анимации.

0 голосов
/ 17 февраля 2011

Вот примерное "SSCCE" ...

import java.awt.<em>; import java.awt.geom.</em>; import javax.swing.*;</p> <p>public class myApp extends JFrame{</p> <pre><code>private JPanel myPanel; private JButton myButton; private Ellipse2D e[]; public myApp(){ //the objects I need to draw e = new Ellipse2D.Double[2]; e[0] = new Ellipse2D.Double(50.0, 50.0, 50.0, 50.0); e[1] = new Ellipse2D.Double(120.0, 120.0, 50.0, 50.0); //-------------------------- setSize(400,300); myPanel = new JPanel(new BorderLayout()); myButton = new JButton("Fire"); setLayout(new BorderLayout()); this.add(myPanel, BorderLayout.SOUTH); this.add(myButton, BorderLayout.NORTH); } public static void main(String args[]) { myApp my = new myApp(); my.setVisible(true); }

}

Проблема не только в том, чтоЯ не знаю, КАК использовать класс timer, но я также не знаю, ЧТО добавить в метод, который будет вызывать таймер, чтобы я мог получить анимацию ..!

...