gpt4 book ai didi

java - Swing 动画的正确并发方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:31 25 4
gpt4 key购买 nike

我即将编写一个动画,其中当用户按下(并按住)相应的键时,JPanel 上的角色向左/向右移动。

现在,由于我是并发的新手,我想问:处理动画的代码(即只要按住键就会移动和重新绘制角色的方法)应该在工作线程还是事件调度线程上执行?

我阅读了关于 swing 中并发性的教程,似乎更改组件的内容(在本例中是绘制 JPanel)应该位于事件处理线程上,但另一方面,只要正确按住某个键,就会卡住所有其他事件?

例如,如果我理解正确的话,用户在按住向左键时将无法暂停游戏。那么哪种方法是正确的,为什么?或者也许有完全不同的方法来制作这样的动画?

提前谢谢您!

最佳答案

所有绘图都需要在 EDT 线程上完成。切勿在任何其他线程上。使用SwingUtilities.invokeLater() ..用于您的绘画。您可以进行计算,例如您的角色在工作线程上的下一个位置是什么。如果您在 EDT 上创建和使用 Swing 类,则不会出现任何无响应的情况。只要确保您的计算不会太长即可。对于动画,每当您找到角色的下一个位置时,只需调用SwingUtilties.invokeLater 更新 UI 上的更改

关于java - Swing 动画的正确并发方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com