繁体   English   中英

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

[英]stop animation in java applet at mouse click

我有以下场景:如果我在paint()方法中有一个while块(例如用于模拟一个简单的动画,例如旋转多边形,通过多个绘图完成并擦除图形),有没有办法打破阻止时,点击小程序内的鼠标?

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

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

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

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

现在MouseEvent只设置了属性stopLoop=true并且你已经完成了(如果你需要帮助,这里你是如何写一个鼠标监听器

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

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

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

不要使用while循环。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM