首先创建一个扩展类的新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;
接下来在类名之后确保它说 extends WorldView
。像这样的东西:
public class Background extends WorldView
然后声明变量 game 类型Game
和一个 image 类型变量,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/Jbuttons。