Java程序不希望从子类中绘制图像
我只是想为我的游戏画一个背景。我使用的是一张800x600的天空图片,是用颜料画的 快速解释这部分代码:StatoGame将绘制我们在游戏中看到的所有对象,MappaReader从文件加载地图,TextureReader用于加载图像 这是我的代码: (我在游戏中看到的所有的班级都将被抽签) (为游戏加载图像的类) 问题是: 当我从菜单进入游戏时,图形将冻结,但我可以看到程序将写入字符串“RUNNING!!!!!!!!!!!”(StatoGame类中有一个系统输出,以查看游戏是否正在运行。) 如果我加载较小的图像(例如100x100px)而不是原始背景,它将随机工作 如果我加载一个更小的32x32px图像而不是原始背景,它将始终工作 如果我删除了绘制背景的代码,所有这些都可以工作 如果我删除绘制背景的代码并使用Java程序不希望从子类中绘制图像,java,image,graphics,Java,Image,Graphics,我只是想为我的游戏画一个背景。我使用的是一张800x600的天空图片,是用颜料画的 快速解释这部分代码:StatoGame将绘制我们在游戏中看到的所有对象,MappaReader从文件加载地图,TextureReader用于加载图像 这是我的代码: (我在游戏中看到的所有的班级都将被抽签) (为游戏加载图像的类) 问题是: 当我从菜单进入游戏时,图形将冻结,但我可以看到程序将写入字符串“RUNNING!!!!!!!!!!!”(StatoGame类中有一个系统输出,以查看游戏是否正在运行。) 如果
ManipolatoreImmagini MI = new ManipolatoreImmagini();
BufferedImage background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
g.drawImage(background, 0, 0, Game.risoluzioneFinestraX, Game.risoluzioneFinestraY, null);
在班级比赛中画出来,一切都会很好
所以很明显,在其他类中加载的绘图图像有问题。。但如果图像很小,则很有可能使所有图像都正常工作。我没有找到解决办法。希望有人能帮助我
对不起,这是英语,这是所有的代码
package lettori;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import main.StatoGame;
import minor.ErrorManager;
import minor.ManipolatoreImmagini;
public class MappaReader {
String percorsoLivello;
StatoGame SG;
ErrorManager EM;
ManipolatoreImmagini MI;
public MappaReader(String PL, StatoGame SGp) {
SG = SGp;
MI = new ManipolatoreImmagini();
percorsoLivello = PL;
mappaLoader();
//mappaConfigLoader();
}
void mappaConfigLoader() {
try (BufferedReader br = new BufferedReader(new FileReader(percorsoLivello + "config.ini"))) {
String riga;
while ((riga = br.readLine()) != null) {
if (riga.contains("#")) {
} else if (riga.contains("=")) {
StringTokenizer stringTokenizer = new StringTokenizer(riga, "=");
boolean ifNomeVariabile = true;
String nomeVariabile = "";
while (stringTokenizer.hasMoreElements()) {
if (ifNomeVariabile == true) {
nomeVariabile = stringTokenizer.nextElement().toString();
ifNomeVariabile = false;
}
else {
switch (nomeVariabile) {
case "background":
SG.TR.background = MI.CreaTrasparenza(stringTokenizer.nextElement().toString(), 255, 0, 255);
break;
}
}
}
}
}
}
// Gestione errori
catch (FileNotFoundException e) {
EM = new ErrorManager(e.toString(), "Errore");
EM = null;
} catch (IOException e) {
EM = new ErrorManager(e.toString(), "Errore");
EM = null;
}
}
void mappaLoader() {
try {
BufferedReader br = new BufferedReader(new FileReader(percorsoLivello + "Mappa.txt"));
String riga;
int y = 0;
while ((riga = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(riga, " ");
int x = 0;
while (st.hasMoreTokens()) {
SG.mappa[x][y] = st.nextToken();
x++;
}
y++;
}
} catch (IOException e) {
EM = new ErrorManager(e.toString(), "Errore");
EM = null;
}
}
}
package lettori;
import java.awt.image.BufferedImage;
import main.GameManager;
import main.StatoGame;
import minor.ManipolatoreImmagini;
public class TexturesReader{
ManipolatoreImmagini MI;
StatoGame SG;
// TEXTURES
// ATTENZIONE : i blocchi normali (esempio blocco_erba),
// Sono di 28x32 per far si che le decorazioni possano
// essere disegnate
public BufferedImage background;
public BufferedImage blocco_erba;
public BufferedImage blocco_erba_deco_1;
public BufferedImage blocco_erba_deco_2;
public BufferedImage blocco_erba_lato_0;
public BufferedImage blocco_erba_lato_1;
public BufferedImage blocco_erba_lato_2;
public BufferedImage blocco_erba_lato_0_flip;
public BufferedImage blocco_erba_lato_1_flip;
public BufferedImage blocco_erba_lato_2_flip;
public TexturesReader() {
MI = new ManipolatoreImmagini();
//background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
blocco_erba = MI.CreaTrasparenza("Textures/Mappa/blocco_erba.png", 255, 0, 255);
}
}
ManipolatoreImmagini MI = new ManipolatoreImmagini();
BufferedImage background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
g.drawImage(background, 0, 0, Game.risoluzioneFinestraX, Game.risoluzioneFinestraY, null);