0
在此Java遊戲中,healthBars(實心矩形)不允許渲染任何東西。但是,healthBarBorders需要顯示在最前面,因爲它們本質上是一個帶有alpha的框架,允許矩形透視。因爲矩形來自Swing類,而其他東西不能渲染,所以這是問題來自。任何解決方法?無法在填充的矩形上渲染圖像
public void render() {
Graphics g = bs.getDrawGraphics();
//RENDER HERE
backgroundImage.render(g);
player.render(g);
healthBars.render(g); //The rectangles (
healthBarBorders.render(g);
//END RENDER
g.dispose();
bs.show();
}
HealthBar類
public class HealthBar extends JComponent {
int healthP1;
int healthP2;
public void render(Graphics g) {
paintComponent(g); //maybe this.paintComponent(g);
}
//Constructor
public HealthBar(int healthP1, int healthP2) {
this.healthP1 = healthP1;
this.healthP2 = healthP2;
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
//Player 1 health bar
g2.setColor(Color.RED);
Rectangle redBarP1 = new Rectangle(10, 10, 300, 30);
g2.fill(redBarP1);
g2.setColor(Color.GREEN);
Rectangle greenBarP1 = new Rectangle(10, 10, healthP1, 30);
g2.fill(greenBarP1);
//Player 2 health bar
g2.setColor(Color.RED);
Rectangle redBarP2 = new Rectangle(800, 10, 300, 30);
g2.fill(redBarP2);
g2.setColor(Color.GREEN);
Rectangle greenBarP2 = new Rectangle(800, 10, healthP2, 30);
g2.fill(greenBarP2);
g2.dispose(); //Double check if I need this here
}
}
的BackgroundImage渲染方法:
public void render(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(background, 0, -27, 1200, 600, null);
}
播放器渲染方法:
public void render(Graphics g) {
if(attack)
attackAnimation.render(g, x, y, 400 * Game.SCALE, 400* Game.SCALE);
else
g.drawImage(im.player, x, y, 400 * Game.SCALE, 400 * Game.SCALE, null);
}
HealthBarBorders渲染方法:
public void render(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(healthBorder1, 10, 10, 300, 30, null);
g2.drawImage(healthBorder2, 800, 10, 300, 30, null);
}
您需要提供'healthBars'的代碼以及可能的所有其他'render'方法,因爲目前,這都是猜測 – MadProgrammer 2014-09-04 02:46:13