我有一个问题。首先 - 我有,而且我只有一个按钮。 我的问题是:如何为每个按钮点击不同的效果动画。 所以,当我第一次点击按钮图像时,我第二次点击图像从左到右,然后我第三次点击图像消失然后重复第四次点击图像下降(我可以从左到右制作动画) ,动画下来,然后图像消失。所以我知道如何做动画(效果),但我只是不知道如何创建每次点击不同的图像效果)...
答案 0 :(得分:0)
每次单击按钮时,监听器都会增加该计数器。并且您根据计数器的当前值使用不同的动画。当“最后”动画发生时 - 只需将计数器重置为从头开始。
答案 1 :(得分:0)
你去吧
public class ButtonCycle extends JPanel {
private int counter = 0;
public ButtonCycle() {
JButton btn = new JButton("Next");
btn.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseClicked(MouseEvent e) {
switch(counter) {
case 0:
// "Go down"-animation code here
System.out.println("Go down");
counter++;
break;
case 1:
// "Left->right"-animation code here
System.out.println("Left->right");
counter++;
break;
case 2:
// "Disappearing"-animation code here
System.out.println("*poof*, now I'm gone");
counter = 0;
break;
}
}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
});
add(btn);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Button cycling through animations");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setPreferredSize(new Dimension(250,250));
f.setContentPane(new ButtonCycle());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
}
答案 2 :(得分:0)
您可以将 java.util.Random 类与 Random.nextInt()方法一起用于 ActionPerformed中的1到4的值强>你的按钮事件。然后,根据随机生成的值运行特定的动画方法,可能通过开关/大小写或 if 语句......等等。这是一个例子:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Random rnd = new Random();
int value = (rnd.nextInt(4) + 1);
switch (value) {
case 1:
imageDown();
break;
case 2:
imageLeftRight();
break;
case 3:
imageGone();
break;
case 4:
imageUp();
break;
}
}
或者,如果您愿意,可以使用 Math.random()方法,例如:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int value = 4 + (int)(Math.random() * (((1 - 2) - 4) + 1));
switch (value) {
case 1:
imageDown();
break;
case 2:
imageLeftRight();
break;
case 3:
imageGone();
break;
case 4:
imageUp();
break;
}
}
当然有时候生成的随机数与之前生成的数字非常相似,但是你可以再次使用类字段来保存先前的随机数,如果当前生成的值是相同的话作为先前生成的值,您可以在 do / while 循环中生成另一个值,例如:
private int previousValue = 0;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int value = 0;
Random rnd = new Random();
do {
value = (rnd.nextInt(4) + 1);
} while (previousValue == value);
previousValue = value;
switch (value) {
case 1:
imageDown();
break;
case 2:
imageLeftRight();
break;
case 3:
imageGone();
break;
case 4:
imageUp();
break;
}
}