У меня есть апплет, который я пытаюсь нарисовать, но я хочу сделать это вне метода paint () апплета.В настоящее время у меня есть класс Entity, который принимает имя файла и координаты экрана в качестве аргументов.Конструктор делает вызов класса Sprite, который обрабатывает загрузку ресурсов и тому подобное.
Итак, у меня есть класс с именем MainMenuState, который изначально должен был обрабатывать ввод с клавиатуры для главного меню моего апплета (яработая над 2D-игрой), но я понял, что было бы лучше добавить туда и код для рисования.То, что я хочу сделать, это нарисовать фон главного меню при построении состояния главного меню.Вот что у меня есть:
Game.java
(расширяет апплет)
public void init() {
this.setSize(500, 500);
// New games have the MainMenuState by default because the game starts at the main menu.
setState(new MainMenuState(this));
Entity background = new Entity("../Assets/Menus/titleScreen.png", 0, 0);
background.draw(this.getGraphics());
}
MainMenuState.java
(расширяет абстрактный класс State)
public MainMenuState(Game game) {
super(game);
Graphics g = game.getGraphics();
Entity background = new Entity("../Assets/Menus/titleScreen.png", 0, 0);
background.draw(g);
}
Апплет работаети все методы рисования вызываются правильно, но апплет никогда не рисует изображение на экране.В настоящее время метод paint () моего апплета пуст.Как я могу рисовать изображения на экране вне метода paint () апплета?
Спасибо.
Обновление: Хорошо.Я изменил свой класс MainMenuState так, чтобы он вызывал метод draw () фона, используя графический контекст внеэкранного буфера, который я затем рисую на экране.Это работает, но у меня мерцает всякий раз, когда я изменяю размер окна.
Game.java
public void init() {
this.setSize(500, 500);
offScreen = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
graphics = offScreen.getGraphics();
// New games have the MainMenuState by default because the game starts at the main menu.
setState(new MainMenuState(this));
}
public void paint(Graphics g) {
g.drawImage(offScreen, 0, 0, this);
}
public void update(Graphics g) {
paint(g);
}
MainMenuState.java - то же самое, за исключением этого: background.draw(game.getOffScreenGraphics());
Обновление2: конечно, апплеты всегда мерцают, когда они изменяют размер?Это могло бы быть.