Erstellen Sie zuerst eine neue Klasse, die die Klasse WorldView
erweitert. Ich nannte meine neue Klasse Background
. Importieren Sie also in dieser neuen Klasse alle Java-Pakete, die Sie benötigen, um die Methode paintBackground
zu überschreiben. Dies sollte sein:
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;
Weiter nach dem Klassennamen sicherstellen, dass sie sagt, erstreckt WorldView
. Etwas wie folgt aus:
public class Background extends WorldView
dann die Variablen Spiel Game
Typ deklarieren und eine Bild Variable vom Typ Image
etwas wie folgt aus:
private Game game;
private Image image;
Dann im Konstruktor dieser Klasse stellen Sie sicher, das Spiel vom Typ Game
ist in der Signatur des Konstruktors und in dem Aufruf an super
müssen Sie die WorldView
initialisieren, das Spiel initialisieren und die Bildvariablen initialisieren, etwa so:
super(game.getCurrentLevel().getWorld(), game.getWidth(), game.getHeight());
this.game = game;
bg = (new ImageIcon("lol.png")).getImage();
Dann überschreiben Sie einfach die paintBackground
Methode in genau der gleichen Art und Weise wie Sie, als in der Player
Klasse die paint
Methode überschrieben. Genau wie folgt aus:
public void paintBackground(Graphics2D g)
{
float x = getX();
float y = getY();
AffineTransform transform = AffineTransform.getTranslateInstance(x,y);
g.drawImage(bg, transform, game.getView());
}
Nun endlich haben Sie eine Klassenstufe Verweis auf die neue Klasse deklarieren Sie nur in der Game
Klasse gemacht und initialisieren diese im Game
Konstruktor, so etwas wie dieses:
private Background image;
And in the Game constructor:
image = new Background(this);
Zuletzt müssen Sie nur noch den Hintergrund zum Rahmen hinzufügen! Das ist die Sache, ich bin mir sicher, dass wir alle vermisst wurden. Zu tun, dass Sie so etwas wie dies nach den Variablen frame
zu tun haben, hat erklärt:
frame.add(image);
Stellen Sie sicher, diesen Code hinzufügen, kurz vor frame.pack();
. Stellen Sie außerdem sicher, dass Sie ein Hintergrundbild verwenden, das nicht zu groß ist!
Jetzt ist es soweit! Ich habe bemerkt, dass die Game-Engines JPEG- und PNG-Bildformate verarbeiten können, aber auch andere unterstützen können. Auch wenn dies ein Hintergrundbild in deinem Spiel beinhaltet, ist es nicht perfekt!Denn sobald du zur nächsten Ebene gehst, sind alle deine Plattformen und Sprites unsichtbar und alles, was du sehen kannst, ist dein Hintergrundbild und alle JLabels/JButtons, die du in das Spiel eingefügt hast.
Vielen Dank für Ihre Antwort. Ich habe einige Fragen- 1. Wo sollte das betreffende Bild liegen? Können Sie einen Beispiel-Quellpfad des Bildes angeben, da ich nicht sicher bin, wie es angelegt werden soll. – Dew
2. Sagen Sie, wenn ich eine Klasse namens "Hintergrund" mit dem obigen Code erstellen, welche Methode muss ich aufrufen, in meiner 'Spiel' -Klasse (die die Ansicht, Größe des Spielfensters steuert) von der Hintergrundklasse zu das Hintergrundbild erscheinen lassen? Bitte geben Sie ein Beispiel. – Dew
Hier ist der Code, den ich derzeit verwende, um die Hintergrundfarbe meines Spielfensters einzustellen: view = new WorldView (Welt, Breite, Höhe); view.setBackground (neue Farbe (230, 245, 255)); – Dew