首先创建一个扩展WorldView 类的新类。我打电话给我的新班级Background。因此,在这个新类中导入您需要的所有 Java 包,以覆盖 paintBackground 方法。这应该是:
import city.soi.platform.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.ImageObserver;
import javax.swing.ImageIcon;
import java.awt.geom.AffineTransform;
在类名之后确保它显示扩展WorldView。像这样的:
public class Background extends WorldView
然后声明Game 类型的变量游戏和Image 类型的图像变量,如下所示:
private Game game;
private Image image;
然后在此类的构造函数中确保Game 类型的游戏在构造函数的签名中,并且在对super 的调用中,您必须初始化WorldView,初始化游戏并初始化图像变量,如下所示:
super(game.getCurrentLevel().getWorld(), game.getWidth(), game.getHeight());
this.game = game;
bg = (new ImageIcon("lol.png")).getImage();
然后,您只需以与在 Player 类中覆盖 paint 方法时完全相同的方式覆盖 paintBackground 方法。就像这样:
public void paintBackground(Graphics2D g)
{
float x = getX();
float y = getY();
AffineTransform transform = AffineTransform.getTranslateInstance(x,y);
g.drawImage(bg, transform, game.getView());
}
现在最后你必须声明一个对你刚刚在Game类中创建的新类的类级引用,并在Game构造函数中初始化它,如下所示:
private Background image;
And in the Game constructor:
image = new Background(this);
最后,您要做的就是将背景添加到框架中!这就是我确定我们都缺少的东西。为此,您必须在声明变量 frame 后执行以下操作:
frame.add(image);
确保在frame.pack(); 之前添加此代码。
还要确保使用不太大的背景图片!
现在就是这样!我注意到游戏引擎可以处理 JPEG 和 PNG 图像格式,但也可以支持其他格式。尽管这有助于在您的游戏中包含背景图像,但它并不完美!因为一旦你进入下一个级别,你的所有平台和精灵都是不可见的,你所能看到的只是你的背景图像和你在游戏中包含的任何 JLabels/Jbuttons。