首先创建一个扩展该类的新类。我打电话给我的新班级。因此,在这个新类中,导入所有 Java 包,以便重写该方法。这应该是:WorldView
Background
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;
接下来,在类名之后,确保它显示 extends 。像这样: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();
然后,只需以与在类中重写方法时完全相同的方式重写该方法即可。就像这样:paintBackground
paint
Player
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/Jbutton。