有没有办法用 java.swing 实现浮动伤害数字?
Is there a way to implement floating damage numbers with java.swing?
我正在使用 Java Swing 创建一个游戏,我发现需要图形显示此时正在发生的事情。当前显示使用 JButton 网格来表示战场上的方块。是否可以使用定制的像素艺术 GIF 在 JButton 上显示 floating/disappearing 伤害数字?如果是这样,我将如何实施?
几乎所有的 Swing 组件都可以扩展以改变它的表现形式。
创建一个自己的按钮 class 扩展 JButton
并覆盖其 paintComponent
方法以显示所需的损坏。此方法接收一个 Graphic
(实际上是 Graphics2D
的一个实例),如果一个 active.
,您可以在其上绘制伤害
非常简单的例子:
public class DamageButton extends JButton {
private String damage = null;
public DamageButton(String text) {
super(text);
}
public void setDamage(String damage) {
this.damage = damage;
System.out.println(damage);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (damage != null) {
Graphics2D gg = (Graphics2D) g.create();
try {
gg.setColor(Color.RED);
gg.drawString(damage, 10, 10);
} finally {
gg.dispose();
}
}
}
}
正在创建一个新的 Graphics
(gg
),因此 g
的设置不会更改,也不需要恢复。
使用一些文本调用 setDamage()
以使其显示在按钮上或使用 null
以取消效果。
可以(或多或少)轻松添加动画或其他效果。请注意,给定的 Graphics2D
的剪裁区域设置为按钮的尺寸。
我正在使用 Java Swing 创建一个游戏,我发现需要图形显示此时正在发生的事情。当前显示使用 JButton 网格来表示战场上的方块。是否可以使用定制的像素艺术 GIF 在 JButton 上显示 floating/disappearing 伤害数字?如果是这样,我将如何实施?
几乎所有的 Swing 组件都可以扩展以改变它的表现形式。
创建一个自己的按钮 class 扩展 JButton
并覆盖其 paintComponent
方法以显示所需的损坏。此方法接收一个 Graphic
(实际上是 Graphics2D
的一个实例),如果一个 active.
非常简单的例子:
public class DamageButton extends JButton {
private String damage = null;
public DamageButton(String text) {
super(text);
}
public void setDamage(String damage) {
this.damage = damage;
System.out.println(damage);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (damage != null) {
Graphics2D gg = (Graphics2D) g.create();
try {
gg.setColor(Color.RED);
gg.drawString(damage, 10, 10);
} finally {
gg.dispose();
}
}
}
}
正在创建一个新的 Graphics
(gg
),因此 g
的设置不会更改,也不需要恢复。
使用一些文本调用 setDamage()
以使其显示在按钮上或使用 null
以取消效果。
可以(或多或少)轻松添加动画或其他效果。请注意,给定的 Graphics2D
的剪裁区域设置为按钮的尺寸。