Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

diaporama avec préchargement

Envoyé: 21 mars 2006, 18h49 par popo


Bjr à tous,

je souhaite faire défiler des images.
Le chemin des images viennent d'un fichier XML.
J'ai d'un côté un tableau avec les chemins des images, et de l'autre une fonction qui fait apparaitre l'image.
Le problème est que je ne sais pas comment faire pour faire défiler les images les unes derrières les autres, en reglant la tempo. Le top du top, serait de charger l'image N+1 pdt que l'image N est affichée... est ce que qqun saurait me trouver le bout de code manquant ?

voici le code en question :
var myXML = new XML();
var nm;
myXML.ignoreWhite = true;
var maxi_nm ;

// Fonction pour initialiser les champs d'affichage du préchargement.
_global.initCompteur = function () {
_root.total.text = 0 + " ko" ; // initialisation du champ total
_root.charge.text = 0 +" ko"; // initialisation du champ charge
_root.pourcent.text = 0 + " %"; // initialisation du champ pourcent
_root.nom.text = "" ; // initialisation du champ nom
}

// Prototype pour un exemple d'effet d'alpha progressif pour faire apparaitre l'image lentement une fois chargée
// On peut remplacer cet effet par tout autre ou même le supprimer.
MovieClip.prototype.effect = function (vitesse) {
this.onEnterFrame = function () {
if (this._alpha < 100) {
this._alpha += vitesse ; // on incrémente l'alpha du clip contenant l'image
} else {
this._alpha = 99 ; // on ne met pas 100 pour éviter le bug d'affichage de flash
delete this.onEnterFrame ; // on détruit la boucle
}
}
}

MovieClip.prototype.preloadImage = function ( url , methode) {
// création d'un clip temporaire pour lancer le préchargement
_root.createEmptyMovieClip("clipTemp" , -9999 ) ;
// on détermine le nom du clip où l'on charge l'image pour le ciblage
_root.clipTemp.nom = this ;

// on détermine les évènements du préchargement qui se lancera à l'ouverture du clip temporaire
_root.clipTemp.onLoad = function () {
initCompteur () ; // Mise à jour de l'affichage
_root.nom.text = url ; // on affiche le nom de l'image
this.onEnterFrame = function() {
this.total = Math.round(this.nom.getBytesTotal()/1024); // on divise par 1024 car on cherche à afficher les ko et non le nombre de bytes
_root.total.text = this.total +" ko"; // mise à jour de l'affichage du TextField total
this.lu = Math.round(this.nom.getBytesLoaded()/1024);
_root.charge.text = this.lu +" ko"; // mise à jour de l'affichage du TextField charge
this.pourcent = Math.round((this.lu/this.total)*100) ;
_root.pourcent.text = this.pourcent + " %"; // mise à jour de l'affichage du TextField pourcent

if (this.pourcent == 100) { // si le préchargement est terminé :
this.nom._alpha = 0 ; // on rend invisible l'image en mettant un alpha nul sur le clip qui contient celle ci.
this.nom.Effect (10) ; // on lance l'effet avec une vitesse de 10 pour afficher l'image
delete this.onEnterFrame ; // on détruit la boucle infinie appliquée sur le clip temporaire
this.removeMovieClip() ; // on détruit le clip temporaire
}
}
}

// chargement de l'image selon les paramètres défini par l'utilisateur
this.loadMovie( arguments[0],arguments[1]);
// Lancement du préchargement de l'image
_root.clipTemp.onLoad () ;

}

//fonction de chargement de l'image
display = function ( url ) {
createEmptyMovieClip("clip",1); // création d'un clip qui contiendra l'image à charger qui porte comme nom d'occurence "clip"
clip.onLoad = function () { // fonction qui défini ce qui se passe quand le clip "clip" est chargé.
this._x = 1 ; // on place le clip selon _x = 100 sur l'animation principale.
this._y = 1 ; // on place le clip selon _y = 100 sur l'animation principale.
this.preloadImage (url) ; // on lance le chargement de l'image et de son préchargement
this._visible = false ; // on rend invible le clip (on ne sait jamais :) Peut servir si on charge une autre image
}
clip.onLoad(); // on lance le chargement quand on le clip est chargé aprés sa création.
}

myXML.onLoad = function(success) {
if (success)
{if (myXML.loaded && myXML.hasChildNodes)
{_root.flyer = new Array();
if (myXML.firstChild.nodeName.toLowerCase() == "flyer")
{nm = myXML.firstChild.childNodes;
maxi_nm = nm.length ;
for (i=0; i<=nm.length; i++)
{ if (nm[i].nodeName == "flyer_img")
{ _root.flyer.push(nm[i].attributes.img_name);
//_root.slide_titles.push(nm[i].firstChild.nodeValue);
}
}
}
}
}
//trace ("max vignettes:" + maxi_nm)
for (i=0; i<nm.length; i++)
{
// affichage des images à la suite ??
display(_root.flyer[i]);
}
};

myXML.load("flyer.xml");


// Fin du Script.


Réponses

 Aucune réponse à ce message... 
Aucun médias sociaux
X

Trucsweb.com Connexion

X

Trucsweb.com Mot de passe perdu

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte