Je crée un jeu en LibGDX/Java. Lorsque le jeu se lance, il charge tous les actifs dans le dossier "assets". Avant cela, il charge une image à utiliser comme image de chargement pendant le chargement des actifs. Cela fonctionne parfaitement sur le bureau, mais lors du lancement sur Android, un écran noir s'affiche pendant environ 30 secondes avant que l'image de chargement ne dessine et que les actifs commencent à se charger.Java LibGDX - L'écran noir apparaît pendant une longue période stupide avant le chargement de l'écran
Mon code actuel est le suivant:
LoadingState.java:
public void render(SpriteBatch batch) {
if (!loadedBg) {
GameManager.getInstance().assetManager.finishLoadingAsset("gui/constant/menuBg.png");
loadedBg = true;
}
Texture background = gameManager.assetManager.get("gui/constant/menuBg.png", Texture.class); // Set background image
/* Drawing */
batch.draw(background, 0, 0);
}
Assets.java:
/** Loads all assets from the asset directories */
public void load() {
List<FileHandle> allFiles = new ArrayList<FileHandle>(); // This will contain all the files in all the subdirectories.
for(FileHandle dir : assetDirs) {
allFiles.addAll(FileUtils.listf(dir.path()));
}
for(int i = 0; i < allFiles.size(); i++) {
if(allFiles.get(i).name().startsWith("._")) {
allFiles.remove(i);
}
}
/* Iterate through all the files and load only the png ones */
for(FileHandle f : allFiles) {
if(f.name().endsWith(".png")) { // Found an image file; load it as a texture
manager.load(f.path(), Texture.class);
}
}
}
EDIT: Ajouté la classe FileUtils FileUtils.java :
/** Returns all files from a directory */
public static List<FileHandle> listf(String directoryName) {
FileHandle directory = Gdx.files.internal(directoryName);
List<FileHandle> resultList = new ArrayList<FileHandle>();
// Get all the files from a directory
FileHandle[] fList = directory.list();
resultList.addAll(Arrays.asList(fList));
for (FileHandle file : fList) {
if (file.isDirectory()) {
resultList.addAll(listf(file.path()));
}
}
return resultList;
}
Est-ce un problème avec les applications Android dans leur ensemble? Ou seulement LibGDX? Je n'avais pas ce problème plus tôt dans le développement. Toute aide est appréciée, merci!
Vous devez faire quelque chose qui prend beaucoup de temps avant le premier retour de la méthode 'render()'. Vous ne pouvez pas voir assez de votre code ici pour déterminer quoi. Est-ce que FileUtils provient d'Apache Commons, ou est-ce votre propre classe? – Tenfour04
@ Tenfour04 Merci de vérifier mon code, désolé pour la réponse différée. Je suis allé de l'avant et ajouté la classe FileUtils pour vous de vérifier. La classe de rendu est ce qui est montré dans la section de LoadingState.java et je ne crois pas que quelque chose de long soit couru, parce que si c'était le cas cela montrerait également un écran noir sur le bureau. Dans son état actuel, l'écran noir apparaît uniquement sur Android et non sur le bureau. Appréciez toute aide – Flizzet