Gostaria de saber se é uma boa idéia usar um JProgressBar pra representar uma health bar (aquela barrinha de vida dos jogos de luta por exemplo…) de um jogo.
…ou se alguem tiver uma idéia melhor de como representar uma health bar de um jeito mais fácil podia me dar um exemplo?
obs.: considerando que os pontos de vida do jogador variam com a experiencia que ele ganha, ou seja, seria uma barra dinâmica.
Você pederia usar uma imagem, ai conforme fosse perdendo ou ganhando vida vc aumentava ou diminuia a largura da imagem
Concordo. Ou também pode criar um retangulo preto, um quadrado de outra cor i ir pintando o quadrado sobre esse retangulo a medida que a vida vai diminuindo ou aumentando (pra isso nem precisa de imagem, dá para fazer no java mesmo). Existem várias possibilidades, eu só não te aconcelharia a usar componentes swing (por causa do desempenho), acredito que usar awt seja melhor para jogos.
Eu faço via Java2D aqui o código que uso.
private void drawLifeBar(Graphics2D g) {
Graphics2D g2d = (Graphics2D) g.create();
int percentGood = (health * 100) / maxHealth;
int percentBad = -(percentGood - 100);
g2d.setColor(Color.GREEN);
g2d.fillRect((int) getX() - 5, (int) getY() - 5, percentGood / 5, 3);
g2d.setColor(Color.RED);
g2d.fillRect((int) (getX() - 5) + (percentGood / 5), (int) getY() - 5,
percentBad / 5, 3);
g2d.dispose();
}