如何暂停定时任务java?[关闭]

java javafx timer timertask 匿名 | 2020-08-01 20:14:38



关闭。这个问题需要更加集中。它目前不接受答案。



想要改进这个问题吗?更新问题,让它只关注一个问题,只需编辑这篇文章。

1小时前就结束了。
改进这个问题


嗨,我是一个大学学生,在Java和多线程方面都没有太多的经验。
我是为一个必须使用javafx的作业制作这个游戏的作为“前端”和java作为后端。
在这种情况下,玩家可以拿起一种药剂,而敌人会在5秒钟内逃离玩家(比如吃豆人?)
我把这一部分编码为一旦玩家拿起药水,敌人的移动就会改变,我设置了一个定时器+定时器任务,在那里5秒后它将执行并通知敌人,以便他们的移动恢复正常。
不过,现在我正试图在javafx中实现暂停按钮,我不知道如何才能暂停调度考虑过一些绕行,但它们并不能真正完美地工作。
有没有办法暂停计时器?
有没有办法取消timertask并查看它在运行之前等待了多长时间?
public void playerGotPotion(){
if (hasPotion && currentTask != null){
currentTask.cancel();
}else{
hasPotion = true;
notifyPlayerGotPotion(true);
}
currentTask = new TimerTask(){
public void run(){
notifyPlayerGotPotion(false);
hasPotion = false;
}
};
potionTimer.schedule(currentTask, 5000);
hasPotion = true;
}






3 答案



总体来说,游戏中的时间推进是如何工作的?
如果你已经有一些游戏循环在运行(例如定期移动所有的敌人一点),你可以考虑使用这个循环来安排事件。例如,你可以创建一个计数器,它每滴答一次递减,当它达到零时,药水就会消失。
这并不能直接回答你的问题,但是你不需要打开并发的潘多拉盒子。暂停时,您将以任何方式停止游戏循环(这样就不会有人移动),这样一切都会顺利进行;)

2020-08-03 01:20:52
匿名


总体来说,游戏中的时间推进是如何工作的?
如果你已经有一些游戏循环在运行(例如定期移动所有的敌人一点),你可以考虑使用这个循环来安排事件。例如,你可以创建一个计数器,它每滴答一次递减,当它达到零时,药水就会消失。
这并不能直接回答你的问题,但是你不需要打开并发的潘多拉盒子。暂停时,您将以任何方式停止游戏循环(这样就不会有人移动),这样一切都会顺利进行;)

2020-08-02 14:41:21
匿名


总体来说,游戏中的时间推进是如何工作的?
如果你已经有一些游戏循环在运行(例如定期移动所有的敌人一点),你可以考虑使用这个循环来安排事件。例如,你可以创建一个计数器,它每滴答一次递减,当它达到零时,药水就会消失。
这并不能直接回答你的问题,但是你不需要打开并发的潘多拉盒子。暂停时,您将以任何方式停止游戏循环(这样就不会有人移动),这样一切都会顺利进行;)

2020-08-01 20:14:49
匿名


World is powered by solitude
备案号:湘ICP备19012068号