ce que je voudrai c'est avoir un loading pour chaque nouvelle séquence et ne pas avoir ce gros loading super lourd dès le départ.
Est-ce possible ? ou faut-il passer par des swf annexes et des loadmovie ?
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 19 janv. 2007 à 08:32
Bonjour,
tu donnes la réponse à ta question dans ton post :
Il faut passer par des swf externes et utiliser des loadMovie() ou des movieClipLoader()
Perso ma préférence va à la seconde possibilité, movieClipLoader() donnant directement des information sur l'avancement du chargement et permet de déclencher des événements lorsque le chargement est terminé.
Twist02
Messages postés7Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention22 janvier 2007 19 janv. 2007 à 12:13
Super merci !! j'avance à grand pas dans le code !!
//on crée le clip vide dans lequel on va loader notre image
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie("image.jpg");
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void
{
//on définit une variable "charge" dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
var total:Number = conteneur.getBytesTotal();
//on définit une variable "total" dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable "pourcent"
var pourcent:Number = Math.round(charge/total*100);
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
//si oui, le chargement est fini, on supprime l'écouteur pour ne plus exécuter tout ça
delete this.onEnterFrame;
//ici on est sûr que notre image (ou swf) est bien chargée, on peut la redimensionner ou accéder aux éléments de notre swf
conteneur._x = 100;
//je place mon image (ou swf) à 100pixels du bord gauche.
}
else
{
//ici le chargement n'est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de "pourcent" pour montrer l'avancement du chargement.
}
Je ne sais pas comment m'y prendre pour la barre de load ... pouvez vous m'aider ?
J'ai un calque pour ma barre, un autre avec un texte dynamique pour afficher le %.
comment je peux transformer mon code :
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 20 janv. 2007 à 13:13
Salut,
non, tu mets ta barre dans le clip pricipale et lorsque le chargement est terminé, soit tu éfface ta barre (si elle ne doit plus servir), soit tu lui donne un _alpha de 0 et du coup elle est invisible
donc, dans le if (pourcent == 100){
....
barre._alpha=0
// idem pour le texte dynamique
texteDynamique.text=""
}
Twist02
Messages postés7Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention22 janvier 2007 22 janv. 2007 à 16:03
Voici la dernière version de mon code, qui bug...
Ma barre, mon pourcentage et mon texte chargement en cours restent affichés
rien de surprenent car je ne sais pas comment les effacer !!!
Pour mon loading, j'ai un calque avec un clip pour ma barre (avec comme nom barre)
un autre calque avec un clip "chargement en cours" (qui n'a pas de nom) + mon texte dynamique pour le % (qui n'a pas de nom)
Si un de vous à 5min pour faire le petit bout de code qui me manque pour que mon loading fontionne, ce serait super, merci !
stop();
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie("22Jousselin-pavillon-radn.swf");
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void
{
//on définit une variable "charge" dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
var total:Number = conteneur.getBytesTotal();
//on définit une variable "total" dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable 18;pourcent19;
var pourcent:Number = Math.round(charge/total*100);
//on définit une variable "pourcent"
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
//si oui, le chargement est fini, on supprime l"écouteur pour ne plus exécuter tout ça
delete this.onEnterFrame;
//pas de chargement donc la barre n'est pas visible
}
else
{
pourcent = Math.round((_level0.getBytesLoaded()/_level0.getBytesTotal())*100);
barre._xscale = pourcent;
var pourcentage:String=pourcent +" %"
}
}
Twist02
Messages postés7Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention22 janvier 2007 22 janv. 2007 à 16:54
Bon je viens de refaire le code ça marchera mieux comme ça,
sauf que là je ne sais pas trop comment effacer mon texte chargement en cours et mon %
Pour mon loading, j'ai un calque avec un clip pour ma barre (avec comme nom barre)
un autre calque avec un clip "chargement en cours" (qui n'a pas de nom) + mon texte dynamique pour le % (qui n'a pas de nom)
merci pour votre aide, ça avance !!! ça avance !!
stop();
barre._xscale=0;
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var mcl:MovieClipLoader=new MovieClipLoader();
var _o:Object={}; _o.onLoadProgress function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{ barre._xscale Math.round(bytesLoaded/bytesTotal*100);
}
_o.onLoadInit=function(target:MovieClip):Void
{
barre._visible=false;
}
mcl.addListener(_o);
mcl.loadClip("mapagedephotos.swf",conteneur);