Tutoriels vidéo art graphique gratuits

 
Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Pages: [1]   En bas

Auteur Sujet: Une solution pour un chargement global des fichiers externes  (Lu 2640 fois)

alamedagraphik

  • Wisi tout neuf
  • *
  • Hors ligne Hors ligne
  • Messages: 35
    • Voir le profil
Une solution pour un chargement global des fichiers externes
« le: août 02, 2007, 09:38:56 am »

Bonjour,

Je developpe actuellement un site en Flash qui utilise des fichiers externes (swf et Xml...).
j'utilises pour cela un developpement actionScript qui prend un document Xml où sont repertoriés mes descriptions et url pour mes documents externes.
Par le biais de cette application lors de la navigation le fichier externe en swf est chargé.
var x:XML = new XML();
x.ignoreWhite = true;

var urls:Array = new Array();
var projets:Array = new Array();
var dates:Array = new Array();
var documents:Array = new Array();
var descriptions:Array = new Array();
var whoIsOn:Number;

x.onLoad = function(){
var clips:Array = this.firstChild.childNodes;
for(i=0;i urls.push(clips[i].attributes.url);
projets.push(clips[i].attributes.projet);
dates.push(clips[i].attributes.date);
documents.push(clips[i].attributes.document);
descriptions.push(clips[i].attributes.description);
}
holder1.loadMovie(urls[0]);
projet.text = projets[0];
date.text = dates[0];
document.text = documents[0];
description.text = descriptions[0];
whoIsOn = 0;
}
x.load("tools/illustrationshow.xml");

previous1.onRelease = function(){
if (whoIsOn > 0){
whoIsOn--;
holder1.loadMovie(urls[whoIsOn]);
projet.text = projets[whoIsOn];
date.text = dates[whoIsOn];
document.text = documents[whoIsOn];
description.text = descriptions[whoIsOn];
}
}
next1.onRelease = function(){
if (whoIsOn < urls.length-1){
whoIsOn++;
holder1.loadMovie(urls[whoIsOn]);
projet.text = projets[whoIsOn];
date.text = dates[whoIsOn];
document.text = documents[whoIsOn];
description.text = descriptions[whoIsOn];
}
}
Toutefois il y a un temps de latence entre le moment ou je tente de naviguer sur le fichier suivant et le chargement de ce fichier. Cela ne rend pas la navigation efficace. J'ai bien tenter de faire un preloader pour chacun des fichiers externes qui se presenteront pendant la navigation mais cela n'a pas de conséquence positive.
J'ai tenté aussi de faire un prechargement global par une fonction prototype massLoad() que j'ai trouvé sur le net. Ce prototype charge de façon global tous les documents externes, mais en fait je ne sais pas comment masqué le chargement des images. il cré un rectangle et charge les documents à l'interieur mais cela s'affiche à l'ecran.
MovieClip.prototype.traceRectangle=function(xPos,yPos,width,height,fillColor,lineColor,alpha){
   this.beginFill(fillColor,alpha);
   this.lineStyle(1,lineColor,alpha);
   this.moveTo(xPos,yPos);
   this.lineTo(xPos+width,yPos);
   this.lineTo(xPos+width,yPos+height);
   this.lineTo(xPos,yPos+height);
   this.lineTo(xPos,yPos);
   this.endFill();
}

MovieClip.prototype.setPreloader=function(obj){
   this._y=500;
   this._x=500;
   this.traceRectangle(0,0,180,20,0xFFFFFF,0xFF3300,100, 1);
   this.createEmptyMovieClip("barre",1);
   this.barre._x=5;
   this.barre._y=5;
   this.barre.percent=0;
   this.createTextField("message",2,110,0,180,20, 1);
   this.message.text="chargement..."
   this.onEnterFrame = function() {
      this.barre.clear();
      this.barre.traceRectangle(0,0,100*this.barre.percent,10,0x000000,0x000000,100, 1);
      this.barre.percent=obj.getBytesLoaded()/obj.getBytesTotal();
 /* Pour afficher dans le champ de texte un message :
 '23 ko (10%) de 230 ko téléchargés'
 au lieu de 'chargement...' , enlevez les commentaires autour de la ligne ci-dessous:
 *****************************************************************
 this.message.text=Math.ceil(obj.getBytesLoaded()/1024)+" ko ("+Math.ceil(100*this.barre.percent) +"%) de "+Math.ceil(obj.getBytesTotal()/1024)+"ko téléchargés";
 *****************************************************************/
      if (this.barre.percent>=0.99&&!isNaN(this.barre.percent)) {
         if(this._parent.massLoadWorking!=undefined)
            this._parent.massLoadWorking=false;
         this.removeMovieClip();
      }
   }
}

MovieClip.prototype.loadFile=function(obj){
   /*
   ** la variable en parametre est un objet du type:
   ** {type:a,file:b,newName:c,level:d}
   */
   var type=obj.type;
   var file=obj.file;
   var newName = obj.newName;
   var level = obj.level;
   this.createEmptyMovieClip("control",(level+1));

   if(type=="movieClip"||type=="image"){
      this.createEmptyMovieClip(newName,level);
      this[newName].loadMovie(file);
   }
   if(type=="loadVars"){
      this[newName]= new loadVars();
      this[newName].sendAndLoad(file);
   }
   if(type=="xml"){
      this[newName]= new XML();
      this[newName].load(file);
   }
   this.control.setPreloader(this[newName]);
}


MovieClip.prototype.massLoad = function(objects){
   /*
   ** les variables en parametre sont des objets du type:
   ** {type:a,file:b,newName:c,level:d}
   */
   this.massLoadWorking=false;
   this.massLoadList=new Array();
   for(var i=0;i      this.massLoadList.push(arguments[i]);

   this.onEnterFrame=function(){
      if(!this.massLoadWorking&&this.massLoadList.length>0){
         this.massLoadList.reverse();
         this.loadFile(this.massLoadList.pop());
         this.massLoadList.reverse();
         this.massLoadWorking=true;
      }
   }
}
Comme je ne suis pas un excellent developpeur je ne sais pas comment effectuer ce chargement sans que mes images externes ne s'affichent pas à l'ecran. En clair que le preload se charge de stocker les documents externes dans le cache sans que ce preload n'affiche ces documents au depart.

J'ai donc plusieures question:
Comment faire un preloader general me permettant de charger tout les documents externes sans qu'ils ne s'affichent pendant le chargement.
Si dans l'eventualité ou la premiere question est possible n'y a t'il pas de probleme de redondance avec le code que j'utilise pour la navigation avec ces fichiers externes via le document Xml.

Merci de bien vouloir m'eclairer.

A bientôt
IP archivée
 



Wisibility est un sité dédié à la formation aux métiers l’image. Vous y trouverez différentes ressources vous aidant à maîtriser les logiciels graphiques tels que Photoshop, Lightroom, Illustrator, InDesign, Flash… Aujourd’hui, Wisibility réunie plus d'une vingtaine d’experts, intervenant en Entreprise pour former graphistes, webdesigners, développeurs web, photographes, monteurs, trucistes…
Depuis 2006 nous nous sommes spécialisés dans les tutoriels vidéos permettant de se former à distance. Notre forum très actif, géré par une équipe de bénévoles répondra à vos demandes. Vous pourrez également profiter de nos émissions et reportages sur la Wisi TV.
Contact - Wisibility est une marque déposée

Blog - Tutoriels - Wisi TV - Forum