Chargement des images online + getBytesLoaded()

Résolu
archi32 Messages postés 14 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 22 juin 2007 - 6 avril 2005 à 18:12
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008 - 14 avril 2005 à 19:21
Bonjour !

Je ne suis probablement pas le premier !
Mon problème :
Sur Flash MX 2004,
mon site fonctionne bien en local mais sur internet, les photos ne se charge pas bien...jusque là normal.
Au départ je fais ça : (le code est simplifié)
createEmptyMovieClip(conteneur1, 0);
loadMovie("images/" + fichierPhoto[1], conteneur1);
ça ça marche...pas de pb.
Ensuite je veux travailler l'image (je dois donc attendre qu'elle soit chargée), j'ai essayé de mettre plein d'image entre les deux opérations et ça fonctionne mais le temps d'attente devient trop long (même pour ceux qui ont une bonne connexion...pas cool)

Du coup, je crée une boucle du genre :
if(conteneur1.getBytesLoaded() < conteneur1.getBytesTotal()){
gotoAndPlay("chargement");
}
'chargement' est l'image qui précède le code ci-dessus.
Un trace de ces 2 bêtes (getBytes...) me renvoit bien qlq chose.
Mon problème est que cette boucle ne fonctionne pas ! Ce bout de code a l'air ignoré. (ça fait pas plaisir !!) et du coup certaines images ne sont pas du tout affichée.

(Tant que j'y suis, j'ai envisagé de faire un préchargement vers le cache (en php) de toutes mes photos et de les récupérer après en flash, c possible ?)

Merci d'éclairer ma lanterne...

7 réponses

Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
12 avril 2005 à 15:31
Bon moi je vais te proposer un truc mais c du bidouillage
http://www.flashkod.com/code.aspx?ID=22971
C le code ecrit par BlackWizzard
De 1 ca te permettera de passé outre la contrainte du format unique jpg
de 2 tu pourra redimensionné ton image avant le loadmovie, et donc un simple loadmovie te chargera l'image en question au format voulu sans que tu effectue un préchargement j'ai butté dessus pendant un moment aussi donc ... donc ca plus de 3 bidouille tu t'en sortiras. Moi perso j'ai modifié le script pour l'utiliser selon mes besoins donc si t'a besoin d'aide on verra ca par msn c mieux ...

cx
3
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
7 avril 2005 à 10:18
Essai d'aller voir la pour le chargement des images :



http://www.flashkod.com/forum.v2.aspx?ID=427818&nb=2

A tchao !
0
archi32 Messages postés 14 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 22 juin 2007
7 avril 2005 à 11:27
Déjà merci de ne pas m'avoir jeté !
J'ai été voir le code...
(pour ceux que ça intéresse)
var mon_mcl:MovieClipLoader = new MovieClipLoader();
createEmptyMovieClip("image1_mc", 1);
var mon_lstn:Object = new Object();
mon_lstn.onLoadInit = function(cible_mc:MovieClip) {
cible_mc._width = 100;
cible_mc._height = 100;
};
mon_mcl.addListener(mon_lstn);
mon_mcl.loadClip("adresse.jpg", image1_mc);

Si j'ai bien compris, tu me conseille de préparer mon conteneur (dimensionner, placer...) et de charger la photo après dedans ???
Ca peut effectivement solucionner mon problème...
(J'ai pas encore tout compris au code ci-dessus mais je vais voir sur les aides...)

Mais par simple curiosité, j'aimerai bien savoir pourquoi mon contrôle sur le chargement de ma photo (avec getBytesLoaded()) ne fonctionne pas. (alors que le trace fonctionne)

Merci encore !
0
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
7 avril 2005 à 15:31
C'est pas trés optimisé les boucles avec un retour sur une image, je ne
sais pas pourquoi ca ne marche pas mais evite de faire ca.

Tu aurait pu utiliser une boucle while pour le code, mais utilise le movieClipLoader si tu peut c le meilleur moyen.

A tchao !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
archi32 Messages postés 14 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 22 juin 2007
7 avril 2005 à 16:58
ok j'ai fait une boulette, en fait je suis sur Flash MX (tout court !!!) et donc je ne dispose pas de la classe movieClipLoader (et tout ce qui va avec), du coup je ne peux pas du tout utiliser ton code (malheureusement)...
J'ai testé plusieurs chose, notamment ça :
var rapport = 0
while (rapport < 1) {
total = this[conteneur].getBytesTotal() ;
chargee = this[conteneur].getBytesLoaded() ;
rapport = Math.round((chargee)/(total));
}
Le problème c que là le navigateur propose de bloquer le script (cette boucle doit se répéter trop de fois)
pour le chargement de chaque photo...
En plus, cette boucle a l'air de bouffer pas mal de ressource car elle ralonge de bcp le temps de chargement des photos. (La bonne nouvelle, c'est qu'elle s'excécute apparament !)
Et comme tu dis, le renvoi sur diapo bug de temps en temps

J'ai toujours besoin d'aide...
(le préchargement en php est envisageable ? -- j'avoue que préfère résoudre ça ds le flash mais bon...)

Merci et dsl pour la version de flash
0
archi32 Messages postés 14 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 22 juin 2007
13 avril 2005 à 09:44
Merci !
j'ai regardé vite fait le code php, ça peut coller...
mais entre-temps je suis passé à MX 2004 , je vais donc d'abord essayer sur Flash mais je garde le code que tu m'as donné sous le coude !!! (J'ai pas super confiance en flash pour le chargement de photos sur internet)

Merci encore !!!
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
14 avril 2005 à 19:21
C niquel alors ... sauf que je te rappelle encore une fois que flash ne charge pas les jpg progressif et les autre format gif png ( en fait il ne lit que les jpg non progressive). Donc le script couplé a flash me parait essentiel pour ce que tu veux faire ( a moins que tu n'en ai pas besoin :D )
Allé bonne chance et bon coding :)
0
Rejoignez-nous