我试图在鼠标点击时启动一个小动画......这是我的代码
import acm.graphics.*;
import acm.program.*;
import java.awt.*;
import acm.util.*;
import java.awt.event.*;
public class ClickAnimation extends GraphicsProgram {
GOval ball=new GOval(50,50,50,50);
public void run() {
add(ball);
addMouseListeners();
}
public void mouseClicked(MouseEvent e) {
while(ball.getX()<getWidth()) {
ball.move(0.2,0.2);
pause(10);
}
}
}
Google表示while循环不能在鼠标监听器中使用...我该如何解决这个问题?
答案 0 :(得分:0)
我想我遇到了你的问题。我找出了 JAVA 中鼠标侦听器内部循环不起作用的原因是线程问题。这在 this link 中有解释。所以我通过为 while 循环创建另一个威胁解决了这个问题,它解决了我的问题。希望下面的代码可以解决您的问题。
import acm.graphics.*;
import acm.program.*;
import java.awt.*;
import acm.util.*;
import java.awt.event.*;
public class ClickAnimation extends GraphicsProgram {
GOval ball=new GOval(50,50,50,50);
public void run() {
add(ball);
addMouseListeners();
}
public void mouseClicked(MouseEvent e) {
Thread x = new Thread(new InnerBallClass());
x.start();
}
public class InnerBallClass implements Runnable{
public void run(){
while(ball.getX()<getWidth()) {
ball.move(0.2,0.2);
pause(10);
}
}
}
}