摇摆计时器如何工作?
你好,我在试图了解摆动计时器时遇到了麻烦。 帮助我可以有人给我看一个简单的闪烁动画? 我在网上看了很多但仍然不完全明白他们是如何工作的。 如果有人能给我这样一个例子,那会很有帮助:
如果我创建了一个圆圈:
g.setColor(colors.ORANGE); g.fillOval(160, 70, 50, 50);
那么我怎么能使用摆动计时器将颜色从橙色改为使用带延迟的摆动计时器的灰色?
非常感谢你帮助我理解:)
首先,你不会硬编码你的颜色使用如下:
g.setColor(colors.ORANGE); g.fillOval(160, 70, 50, 50);
因为这会阻止所有改变颜色状态的能力。 而是使用类字段来保存使用的颜色,并将其称为像ovalColor
:
private Color ovalColor = SOME_DEFAULT_COLOR; // some starting color
然后使用该颜色绘制:
g.setColor(ovalColor); g.fillOval(160, 70, 50, 50);
然后我给我的类一个Color或ArrayList
数组和一个int索引字段:
private static final Color[] COLORS = {Color.black, Color.blue, Color.red, Color.orange, Color.cyan}; private int index = 0; private Color ovalColor = COLORS[index]; // one way to set starting value
然后在Swing Timer的ActionListener中我增加索引,我用数组或ArrayList的大小来修改它,我得到索引指示的颜色并调用repaint()
;
index++; index %= COLORS.length; ovalColor = COLORS[index]; repaint();
这也是一个类似的例子 。
另请参阅Swing Timer教程 。
也许这会有所帮助:
public class object{ Color color = Color.GREEN; Timer timer; public object() { timer = null; timer = new Timer(5000, new ActionListener(){ public void actionPerformed(ActionEvent e) { if (color.equals(Color.GREEN)) { color = Color.RED; timer.setDelay(2000); } else { color = Color.GREEN; timer.setDelay(8000); } repaint(); } }); timer.start();}}
我认为绘制方法会起作用。就像这样:
public void paint(Graphics g){ super.paint(g); g.setColor(Color.green); g.filloval(30,40,50,50); }