在我的平台游戏中,我有一个swing计时器,它每17毫秒就按以下方法计时一次。在这里,我运行我需要运行的各种事件。我的计划是每当玩家死的时候就让计时器休眠1秒。
我的问题是,我真的没有一个确切的理解如何睡眠摇摆计时器。我看到的每个例子都涉及到使用一个线程,而这不是我正在做的。当我执行以下操作时,会得到一个非法的MonitorStateException错误。
public void actionPerformed(ActionEvent e)
{
if (!louis.isDead)
{
if (louis.right)
{
louis.moveR();
}
if (louis.left)
{
louis.moveL();
}
if (!louis.left && !louis.right)
louis.friction();
louis.gravity();
louis.checkCol(charMap, mapX, mapY);
mapX -= louis.moveX();
mapY -= louis.moveY();
louis.checkDeath(charMap, mapX, mapY);
}
else
{
try {
time.wait(1000);
} catch (InterruptedException e1) {e1.printStackTrace();}
mapX = initMapX;
mapY = initMapY;
louis = new Player(spawnX, spawnY);
}
repaint();
}
提前谢谢
1条答案
按热度按时间oxosxuxt1#
我的问题是,我真的没有一个确切的理解如何睡眠摇摆计时器。
你没有。你不会在秋千里睡任何东西,除非你想让整个gui都睡着。相反,为什么不简单地记录开始时间,用每个记号检查经过的时间,然后当经过的时间大于你的截止时间时激活你想要激活的任何代码呢?
不确定要做什么,但可能是这类范围内的某个东西(代码未测试)