你好,我在试图理解摇摆计时器时遇到了麻烦。帮助我可以有人给我看一个简单的闪烁动画?我已经在互联网上看了一眼,但仍然不完全了解他们的工作方式。如果有人能给我一个这样的例子,那会很有帮助:
说如果我创建了一个圆圈:
g.setColor(colors.ORANGE);
g.fillOval(160, 70, 50, 50);
然后我怎么能使用摆动计时器将颜色从橙色改为使用带延迟的摆动计时器的灰色?
非常感谢你帮助我理解:)
答案 0 :(得分:2)
首先,你不会像这样硬编码你的颜色:
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<Color>
数组和一个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();
另外here's a somewhat similar example。
另请查看Swing Timer Tutorial。
答案 1 :(得分:0)
也许这会有所帮助:
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();}}
答案 2 :(得分:-1)
我认为绘画方法会起作用。就像这样:
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.green);
g.filloval(30,40,50,50);
}