Итак, у меня есть этот код, и, очевидно, «g = gd» из метода рендеринга не изменяет значение поля «g».Как я могу вернуть значение из метода void в java
Как я могу сделать так, чтобы метод рендеринга изменял поле g?
Я хочу иметь графическое поле, поэтому я могу использовать графику для печати строк вне метода рендеринга, но я действительно не знаю, как это сделать.
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
EDIT:
хорошо это весь класс, как я могу изменить его так, что displayMessage будет работать? tick() вызывается перед render(), это может быть проблемой?
package com.andrewxd.spaceinvaders.levels;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import com.andrewxd.spaceinvaders.main.Core;
public class Tutorial implements Levels{
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
public void tick() {
displayMessage("Welcome", 200,200);
}
public void displayMessage(String message, int x, int y) {
g.setFont(new Font("ARIAL", Font.BOLD, 20));
g.setColor(Color.RED);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font) {
g.setFont(font);
g.setColor(Color.WHITE);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font, Color color) {
g.setFont(font);
g.setColor(color);
g.drawString(message, x, y);
}
}
Вы не можете вернуть значение из метода 'void'. – Maroun
'render' ** ** модифицирующий' g'. – Maroun
изменить ту же ссылку, которую вы передали методу ... – TheLostMind