鼠标单击时在Java applet中停止动画

时间:2011-11-10 22:31:26

标签: java animation applet mouseevent

我有以下场景:如果我在paint()方法中有一个while块(例如用于模拟一个简单的动画,例如旋转多边形,通过多个绘图完成并擦除图形),是否存在在applet中单击鼠标时打破while块的方法吗?

多边形的动画在不调用paint()方法的情况下完成。如果while块看起来像这样,那么也可以这样做:

while (count<n)
{
    //code that draws the polygon rotating
    count++;
}

2 个答案:

答案 0 :(得分:1)

是的,有一个场景可以保持你的while循环。

最简单的方法是在类文件private boolean stopLoop=false中设置一个变量,并在while循环中检查此属性while (!stopLoop)

现在,MouseEvent只设置了属性stopLoop=true,您就完成了(如果您需要帮助,请How to Write a Mouse Listener

另一个解决方案是使用@camickr提到的Swing Timer(参见其他答案)。让我们假设您在paint()方法之外有一个通用的Timer方法。然后你不能在那里使用while循环。我建议只绘制静态图片,如果你想让你的poligon旋转,只需绘制下一个,但是用另一个角度等等。

这个想法是你将while循环切换到Timer方法中,因此paint()被调用很多次。如果你想阻止poligon盘旋,请使用布尔标志或停止计时器。在第一种情况下,如果处理布尔变量并且鼠标事件正确,则可以处理多个多边形,并且每个多边形都可以启动和停止。

如果您还有其他问题,请添加更多细节,或者bedder向我们展示一些最小化的代码。

答案 1 :(得分:1)

不要使用while循环。

而是使用Swing Timer来安排动画。然后您可以根据需要简单地启动/停止计时器。