Bonjour,
Petit appel au secours de fin de soirée.
Je réalise un petit jeu sous forme d'applet. Globalement l'idée c'est de faire chercher quelque chose dans une photo. Chaque jeu dure quelques secondes, et le chargement des photos prend environ 15 secondes.
D'où problème.
J'ai cru comprendre que le chargement des photos sur une applet était globalement difficile pour tout le monde (mais si vous avez la solution miracle ça m'intéresse aussi.)
Et j'ai eu l'idée (brillante me semblait-il) de gérer une sorte de cache, qui fait que dès que les photos du premier jeu sont chargées, j'envoie le chargement du second jeu en fond de tache.
Je pensais gagner du temps et ben... que dalle.
Voici le passage du code ou j'appelle les images (image2, ne correspond pas à mon image cache mais à une seconde image (il y en a deux par jeu)
Et voici la méthode image Update de mon applet qui lance le jeu si l'image est chargée (et qu'elle correspond au jeu en cours)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 // récupération des images Image image = null; Image image2 = null; try { System.out.println("Début de chargement de l'image "+ URL_image); image = coeur.getImage(new URL(Constantes.URL_FICHIERS + URL_image)); //vérifie s'il y a une image 2 (optionnelle) à charger if (URL_image2.equals("")) { image2 = image; } else image2 = coeur.getImage(new URL(Constantes.URL_FICHIERS + URL_image2)); //observe l'arrivée de l'image coeur.prepareImage(image2, coeur); } catch (MalformedURLException e) { System.out .println("Erreur dans la récupération des images2 : " + e); }
D'après ce qui m'arrive dans la console, un deuxième chargement est bien lancé quand le premier s'achève, mais ce deuxième chargement se bloque immédiatement et n'est relancé que quand un troisième chargement est lancé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 @Override // Méthode appelée pour communiquer les étapes du chargement de l'image public boolean imageUpdate (Image imag, int infoFlags, int x, int y, int width, int height) { System.out.println("je passe ici"); if (imag!=jeu.getImage()) return false; System.out.println("Et là !"); // Si le chargement est terminé, redessin de l'applet if ((infoFlags & ALLBITS) != 0) { lanceLeJeu(); } return (infoFlags & (ALLBITS | ABORT)) == 0; }
Merci à ceux qui m'auront lu jusqu'au bout (et auront peut-être une petite idée). Je ne maitrise pas bien les concepts de prepareimage et de gestion de cache dont j'ai sans doute merdé quelque part...
Qu'est ce qui peut interrompre le chargement d'une image ?
PS: pour ceux qui ont encore le courage ma fenêtre console :
Début de chargement de l'image 16-Mars-2009.jpg
je passe ici
Et là !
je passe ici
Et là !
je passe ici
Et là !
...
[cut de 5000 lignes]
...
je passe ici
Et là !
je passe ici
Et là !
je passe ici
Et là !
je passe ici
Et là !
je passe ici
Et là !
Début de chargement de l'image OU2.jpg
je passe ici
Début de chargement de l'image Hiver.jpg
je passe ici
je passe ici
Et là !
je passe ici
Et là !
je passe ici
Et là !
et ainsi de suite....
Partager