我可能做错了,所以请你好.
我正在开发一个Java游戏,我正处于测试角色移动/动画的阶段.
“人”可以在网格上向左和向下移动.
绘制网格的类是gamePanel类.
按钮位于gameControlPanel类中.
我有一个按钮,可以在网格上生成一个人.
然后,我有一个按钮,可以将人向左和向下移动.
按下向上移动按钮时,它会调用person类中的move up方法.
(目前,我一次只测试一个“人”.)
在那个方法中是以下代码……
int move = 10;
while(move!=0)
{
setTopLeftPoint(new Point((int)getTopLeftPoint().getX(),
(int)getTopLeftPoint().getY() - 3));
try
{
Thread.sleep(300);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
move-=1;
}
问题是我似乎无法从Person类中调用gamePanel类的重绘方法.
为了解决这个问题,我在gamePanel类中创建了一个计时器,它每20ms重新绘制一次.
当人物产生后按下向上按钮时,按钮保持按下直到while循环完成循环,然后人物的圆圈表示显示在上面的网格方框中.
我将尝试回答有关此问题的任何问题.
解决方法:
如果你想以一定的间隔重新绘制,javax.swing.Timer可能就是你的类.在重绘的特定情况下,您可以从非EDT线程调用它,但是您可能会遇到困难,因为您现在处理多个线程.
标签:java,multithreading,animation,timer,swing
来源: https://codeday.me/bug/20190701/1344887.html