Đầu tiên tạo một lớp mới mở rộng lớp WorldView
. Tôi đã gọi cho lớp học mới của tôi Background
. Vì vậy, trong lớp mới này, hãy nhập tất cả các gói Java bạn cần để ghi đè phương thức paintBackground
. Điều này phải là:
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;
Tiếp theo sau tên lớp, hãy đảm bảo rằng nó mở rộng WorldView
. Một cái gì đó như thế này:
public class Background extends WorldView
Sau đó tuyên bố trò chơi biến kiểu Game
và một biến hình ảnh của loại Image
một cái gì đó như thế này:
private Game game;
private Image image;
Sau đó, trong constructor của lớp này đảm bảo các trò chơi loại Game
là chữ ký của hàm tạo và trong cuộc gọi tới super
, bạn sẽ phải khởi tạo WorldView
, khởi chạy trò chơi và khởi tạo biến hình ảnh, như sau:
super(game.getCurrentLevel().getWorld(), game.getWidth(), game.getHeight());
this.game = game;
bg = (new ImageIcon("lol.png")).getImage();
Sau đó, bạn chỉ cần ghi đè phương thức paintBackground
theo cách giống như cách bạn đã thực hiện khi ghi đè phương pháp paint
trong lớp Player
. Chỉ cần như thế này:
public void paintBackground(Graphics2D g)
{
float x = getX();
float y = getY();
AffineTransform transform = AffineTransform.getTranslateInstance(x,y);
g.drawImage(bg, transform, game.getView());
}
Bây giờ cuối cùng bạn phải khai báo một tham chiếu mức lớp để lớp mới, bạn chỉ cần thực hiện trong lớp Game
và khởi này trong constructor Game
, một cái gì đó như thế này:
private Background image;
And in the Game constructor:
image = new Background(this);
Cuối cùng, tất cả những gì bạn phải làm là thêm nền vào khung! Đó là điều tôi chắc chắn tất cả chúng ta đều mất tích. Để làm điều đó bạn phải làm một cái gì đó như thế này sau khi biến frame
đã được tuyên bố:
frame.add(image);
Hãy chắc chắn rằng bạn thêm mã này ngay trước frame.pack();
. Cũng đảm bảo bạn sử dụng hình nền không quá lớn!
Bây giờ là xong! Tôi nhận thấy rằng các công cụ trò chơi có thể xử lý các định dạng hình ảnh JPEG và PNG nhưng cũng có thể hỗ trợ những người khác. Mặc dù điều này giúp bao gồm một hình nền trong trò chơi của bạn, nó không phải là hoàn hảo!Bởi vì một khi bạn đi đến cấp độ tiếp theo tất cả các nền tảng của bạn và sprites là vô hình và tất cả các bạn có thể nhìn thấy là hình nền của bạn và bất kỳ JLabels/Jbuttons bạn đã bao gồm trong trò chơi.
Cảm ơn câu trả lời của bạn. Tôi có một số câu hỏi- 1. Hình ảnh có liên quan ở đâu? Bạn có thể cung cấp cho một ví dụ nguồn gốc của hình ảnh như tôi không chắc chắn làm thế nào nó nên được đặt ra. – Dew
2. Giả sử tôi tạo một lớp được gọi là 'Nền' bằng cách sử dụng mã ở trên, tôi cần gọi phương thức nào, trong lớp 'Trò chơi' của tôi (điều khiển chế độ xem, kích thước của cửa sổ trò chơi) từ lớp Nền tới làm cho hình nền xuất hiện? Xin vui lòng cho một ví dụ. – Dew
Đây là mã tôi hiện đang sử dụng để đặt màu nền của cửa sổ trò chơi của tôi- chế độ xem = new WorldView (thế giới, chiều rộng, chiều cao); view.setBackground (Màu mới (230, 245, 255)); – Dew