用颜色填充(逐渐)ellispe2D对象 - Java动画

时间:2011-02-17 16:15:05

标签: java animation timer shape

我的问题很简单:

1)我有一个扩展JFrame的主类 2)在该类中,有一个JPanel,其顶部有BufferedImage 3)最后还有一个我称之为“Fire”的JButton ..这就是设计的全部......

现在就是这笔交易:

当按下按钮时,有一个方法可以返回5个Ellipse2D对象的数组。 (该数组称为“点”,实质上是一个简单的圆阵列。)。

按“Fire”时我想做的就是让这些对象出现在我称之为“bf”的BufferedImage上,并逐渐让它们以一种能产生动感的方式填充颜色。最简单的方法是什么?

P.S。我已经尝试过使用swing类,但是这个方法的问题是我不能将参数传递给方法调用(在actionPerformed中),如果我想让我的数组通过那么我需要...

提前谢谢

2 个答案:

答案 0 :(得分:2)

构造您的ActionListener对象(传递给Timer的对象),以便它可以访问执行动画所需的数据。 Timer是只是让ActionListener何时进入动画中的下一步。

答案 1 :(得分:0)

这是一个临时的“SSCCE”......

import java.awt.; import java.awt.geom.; import javax.swing.*;

public class myApp extends JFrame{

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

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

问题不仅在于我不知道如何使用计时器类,但我也不知道在计时器将重复调用的方法中放入什么以便我可以获得动画..!