【发布时间】:2018-09-16 12:04:33
【问题描述】:
所以我对 Java 比较陌生,我目前正在尝试制作一个回合制 rpg。我能够将空闲动画添加为 JLabels,当我单击“攻击”按钮时,我希望 attack.gif 播放一次并返回到 idle.gif。有什么办法可以设置吗?
代码示例:
if(source == menu.attack) {
//disabling the attack button for the duration of the animation
menu.attack.setEnabled(false);
//setting the idle animation to invisible
menu.idle.setVisible(false);
//setting the attack animation to visible
menu.attack.setVisible(true);
player.attack(enemy, menu);
update(player, enemy, menu);
}
【问题讨论】:
-
一种简单的方法(在我看来:)使用两张图片。 1 个 gif 和 1 个 jpg。当动作(隐藏 jpg 和显示 gif)在几秒钟的超时后隐藏 gif 和显示 jpg)但将其设置为“一个且只有一个动作”..
-
你不能在动画结束时捕捉到一个事件吗?
-
如果您知道动画的持续时间,您可以使用它在超时后返回 idle.gif。
-
@Stultuske 我该如何设置?我用 .sleep 方法尝试过,但它只是在我设置的时候冻结了整个 gui。
-
您永远不应该在 Swing 中“休眠”EDT 线程。一个解决方案,可能是“姿态改变事件”-> 将 JLabel 设置为 GIF 内容,等待“GIF 持续时间”,-> 将 Jlabel 设置为另一个图标。