begin process at 2012 02 08 09:27:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > SCRIPT DE CHARGEMENT DE CLIPS À LA QUEUE-LEULEU POUR LIMITER LA BANDE PASSANTE (AVEC OPTIONS) FLASHMX8 - ACTION SCRIPT 2

SCRIPT DE CHARGEMENT DE CLIPS À LA QUEUE-LEULEU POUR LIMITER LA BANDE PASSANTE (AVEC OPTIONS) FLASHMX8 - ACTION SCRIPT 2


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Classé sous :flashmx8, chargement, script, queue, passante Niveau :Initié Date de création :02/11/2005 Vu :16 269

Auteur : Loubiou

Ecrire un message privé
Site perso
Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

pour optimiser une animation, j'ai voulu mettre toutes les animations complémentaires dans des fichiers swf séparés puis les charger.
J'ai vite laisser tomber cette solution car tous les clips se chargeaient en même temps ce qui saturait la bande passante.
J'ai donc écris un petit script, permettant de charger mes clips, les uns après les autres dans l'ordre uniquement lorsque le clip précédent a été complètement chargé.
Comme j'intègre des clips, il à fallu les placer sur la scène en définissant des positions.
J'ai donc ajouté des options comme la position mais aussi la transparence et la taille.

Voilà, ce code fonctionne, je vous le livre tel que. Bien entendu on pourrait super optimiser les procédures et enlever les écouteurs qui ne servent pas.
Je pense qu'il pourra rendre service.

Mon prochain petit script sera un test de de bande passante qui permettra en dessous d'une certaine valeur, d'aiguiller sur un site mirroir pour répartir la charge de votre site et ainsi offrir à vos visiteurs une bande passante correcte.





Source

  • /* Script de chargement de clips l'un derrière l'autre (à la queue-leuleu) en avec options
  • ->> Le but étant de limiter la bande passante avec un chargement des clips en même temps !!
  • */
  • // Chargement des clips en position taille alpha ...
  • // attention l'ordre est important.
  • // Tab_Movie c'est le tableau des clips
  • // Tab_clip c'est le tableau contenant les noms de clips qui recevrons les animations pour des appels futurs
  • // Tab_Alpha c'est le tableau indiquant le pourcentage de transparence
  • // PosXY est un tableau contenant les couple de position X et Y
  • //TailleXX est un tableau contenant les couples de taille X et Y
  • Tab_Movie = new Array("lign.swf","btn.swf","marques.swf","radios/radio_lanceur.swf","news.swf","compteur/count.swf");
  • Tab_Clip = new Array("clip0","clip1","clip2","clip3","clip4","clip5");
  • Tab_Alpha = new Array(100,100,80,100,100,100);
  • var PosXY:Object = (PosX,PosY);
  • PosXY = new Array([193,-23],[1,204],[-10,255],[565,50],[1,356],[635,134]);
  • var TailleXY:Object = (TailleX,TailleY);
  • TailleXY = new Array([100,100],[100,100],[100,100],[60,60],[100,100],[80,80]);
  • //pour info, pour appeler une valeur dans un tableau double :
  • //pour la valeur N°1 soit X on fait : trace(PosXY[0][0]);
  • //pour la valeur N°2 soit Y on fait : trace(PosXY[0][1]);
  • // on lance le procéssus et on initaialise la valeur de n=0 ->
  • n=0; Charge(0);
  • //-----------------------------------------------------------------------------------------------------
  • function Charge(n){
  • // on passe en paramètre (n) à la fonction puis les valeur des tableau à Movie et à CLIP
  • Movie=Tab_Movie[n]; CLIP=Tab_Clip[n];
  • mc = new MovieClipLoader();
  • mc_Ecout = new Object();
  • mc.addListener(mc_Ecout);
  • var container:MovieClip = createEmptyMovieClip(Tab_Clip[n], n+2);
  • mc.loadClip(Tab_Movie[n], container);
  • container._x=PosXY[n][0]; container._y=PosXY[n][1];
  • container._xscale=TailleXY[n][0]; container._yscale=TailleXY[n][1];
  • container._alpha=Tab_Alpha[n];
  • //-----------------------------------------------------------------------------------------------------
  • mc_Ecout.onLoadInit = function(cible){
  • //trace(cible + " Pret à l'emploi");
  • };
  • mc_Ecout.onLoadStart = function(cible){
  • // trace("Demande de chargement enregistrée!");
  • };
  • mc_Ecout.onLoadProgress = function(cible, loadedBytes, totalBytes){
  • //trace(Movie+" = "+loadedBytes +"/"+totalBytes);
  • }
  • mc_Ecout.onLoadComplete = function(cible){
  • // trace(cible +" Chargement terminé!");
  • n++;
  • if (n<=Tab_Movie.length+1){
  • Charge(n);
  • //trace(cible+" = "+cible.getDepth());
  • // indique le niveau de chargement
  • }
  • };
  • mc_Ecout.onLoadError = function(cible, codeErreur){
  • //trace (cibel+" = "+codeErreur);
  • };
  • }
  • //-----------------------------------------------------------------------------------------
/* Script de chargement de clips l'un derrière l'autre (à la queue-leuleu) en avec options

->> Le but étant de limiter la bande passante avec un chargement des clips en même temps  !!

*/

// Chargement des clips en position taille alpha ...
// attention l'ordre est important.

// Tab_Movie c'est le tableau des clips
// Tab_clip c'est le tableau contenant les noms de clips qui recevrons les animations pour des appels futurs
// Tab_Alpha c'est le tableau indiquant le pourcentage de transparence
// PosXY est un tableau contenant les couple de position X et Y
//TailleXX est un tableau contenant les couples de taille X et Y
Tab_Movie = new Array("lign.swf","btn.swf","marques.swf","radios/radio_lanceur.swf","news.swf","compteur/count.swf");
Tab_Clip = new Array("clip0","clip1","clip2","clip3","clip4","clip5");
Tab_Alpha = new Array(100,100,80,100,100,100);

var PosXY:Object = (PosX,PosY);
PosXY = new Array([193,-23],[1,204],[-10,255],[565,50],[1,356],[635,134]);

var TailleXY:Object = (TailleX,TailleY);
TailleXY = new Array([100,100],[100,100],[100,100],[60,60],[100,100],[80,80]);

//pour info, pour appeler une valeur dans un tableau double :
//pour la valeur N°1 soit X on fait : trace(PosXY[0][0]);
//pour la valeur N°2 soit Y on fait : trace(PosXY[0][1]);

// on lance le procéssus et on initaialise la valeur de n=0 ->
                                                               n=0; Charge(0);
//-----------------------------------------------------------------------------------------------------
function Charge(n){				
// on passe en paramètre (n) à la fonction puis les valeur des tableau à Movie et à CLIP
Movie=Tab_Movie[n];   CLIP=Tab_Clip[n];					 
mc       = new MovieClipLoader();
mc_Ecout = new Object();
mc.addListener(mc_Ecout);
var container:MovieClip = createEmptyMovieClip(Tab_Clip[n], n+2);
mc.loadClip(Tab_Movie[n], container);
container._x=PosXY[n][0]; container._y=PosXY[n][1];
container._xscale=TailleXY[n][0]; container._yscale=TailleXY[n][1];
container._alpha=Tab_Alpha[n];
//-----------------------------------------------------------------------------------------------------
mc_Ecout.onLoadInit = function(cible){
                                     //trace(cible + " Pret à l'emploi");								     
                                     }; 

mc_Ecout.onLoadStart = function(cible){
                                      // trace("Demande de chargement enregistrée!");
                                      };
mc_Ecout.onLoadProgress = function(cible, loadedBytes, totalBytes){
                                                                   //trace(Movie+" = "+loadedBytes +"/"+totalBytes); 																		   
                                                                  } 
mc_Ecout.onLoadComplete = function(cible){
                                         // trace(cible +" Chargement terminé!");												 
										n++;
										if (n<=Tab_Movie.length+1){
											                     Charge(n);
																  //trace(cible+" = "+cible.getDepth());
																  // indique le niveau de chargement
										                        }												
                                         }; 
mc_Ecout.onLoadError = function(cible, codeErreur){
                                                   //trace (cibel+" = "+codeErreur);
                                                  }; 
}
//-----------------------------------------------------------------------------------------

 Conclusion

Vous pourvez voir une démo ici (pour l'instant) http://www.toutauto.fr/test/map2.html

Créez une bannière gratuite en flash (bibliothèque de 770 images en fond opaque ou semi-transparent)
Visitez GTBann la bannière interactive à 4 Menus dynamiques et stats en temps réel (100% flash)
Cette bannière résiste aux bloqueurs de pubs les plus puissants (!) http://www.GTBann.com



 Sources du même auteur

Source avec Zip Source avec une capture DÉCODER DES CODES HTML PARMIS D'AUTRES ! (AS2)
Source avec Zip Source avec une capture FORMATAGE HTML DANS UN DATAGRID
Source avec Zip Source avec une capture RETAILLER UNE IMAGE EN CONSERVANT SES PROPORTIONS
CHARGEMENT DE 2000 DONNEES SOUS FORME XML EN MOINS DE 1 SECO...
CONTOURNEMENT DU PROBLÈME DE SÉCURITÉ CROSSDOMAIN DE FLASH P...

 Sources de la même categorie

Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar
Source avec Zip Source avec une capture MP3 LAYER NICE &SMALL par yasdar

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONCEPT BROWSER : NAVIGATEUR EN MODE TEXTE par mouloudikhaled
PRELOAD D'IMAGES EXTERNES MUTIPLES par gmni
Source avec Zip Source avec une capture SPACE INVADER V1 ENTIÈREMENT EN ACTION SCRIPT ! par Zacland
Source avec Zip Source avec une capture DIAPORAMA FLASH DYNAMIQUE + XML AVEC MINIATURES(VIGNETTES) E... par baillezon
Source avec Zip Source avec une capture AFFICHAGE D'UN LOADING PRINCIPAL SOUR FORME DE TEXTE, AVEC B... par x_mec

Commentaires et avis

Commentaire de Mafassure le 02/11/2005 21:07:54 administrateur CS

Bonne idée !
d'ailleur je comprend pas pourquoi autant de personnes s'entête à utiliser loadMovie(), c'est tellement plus simple à gerer le chargement avec movieClipLoader....

Commentaire de Alain Proviste le 03/11/2005 00:58:52 administrateur CS

ça part d'une bonne intention ;)

mais n'y connaissant pas grand chose en flash je peux pas juger de l'efficacité :D

Commentaire de tintin119 le 09/11/2005 09:53:00

Bravo, c'est bien pratique, bien commenté... et surtout bien écrit, sans plein de fautes d'orthographe... ;-)
Merci à toi

Commentaire de ameze le 08/01/2006 13:11:13

bonjour,ce script est parfait pour moi,il load exactement comme j'ai besoin..
le probleme,c'est que j'arrive vraiment pas a lui associer une progressbar (une pbar qui gere l'ensemble des clips qui se loadent).
merci beaucoup

Commentaire de Loubiou le 08/01/2006 18:28:19

Ben je ne me suis pas penché sur la question, dans mon désir de simplification et d'allègement, je me suis dit que je charge par ordre de priorité les clips et selon la vitesse de connection les autres arrivent en suivant jusqu'au dernier.
Pour faire une progress bar, il suffit d'utiliser la fonction : onLoadProgress et de faire évoluer un clip en conséquence. On peut tout aussi bien lancer un clip d'un rond qui tourne puis l'effacer dès que c'est chargé. J'ai mis les fonctions utiles pour un éventuel pilotage d'un progress bar en commentaires, il suffit de les utiliser.
Bonne prog et bonne année 2006 ...!

Commentaire de ameze le 09/01/2006 02:55:24

merci beaucoup bonne annee 2006 a toi de meme:
j'ai juste quelquws petites questions que,vu mes connaissances en flash je n arrive pas a resoudre,meme en lisant les aides ..
quel est le role de "container"?
//
mc_Ecout.onLoadStart = function(cible){
que dois on entrer comme cible?
//
sorry,ca me rendrait vraiment service si tu pouvait m eclairer

++

Commentaire de Loubiou le 09/01/2006 03:04:27

Bien c'est très simple, ce sont tous les 2 des clips l'un porte CONTAINER c'est le clip conteneur et l'autre CIBLE c'est le clip "cible" comme son nom l'indique.
Si tu suis le code, tu verras ce qu'on met dans container après l'avoir déclaré et ce qui rentre dans cible.
Je ne comprends pas bien ta question, tout est dans le code, il suffit de lire pour voir qu'à un moment cible contient tel clip puis après tel autre. C'est comme dire que A=T*b si T=Pi
et qu'on fait varier b alors on aura sur les variations de A pour Pi*les valeurs de b.
Heu là c'est des maths mais la notation à point c'est pas simple à expliquer. Je pense qu'avant de programmer sous flash, tu devrais commencer par Delphi qui est un bon professeur pour transposer dans d'autres langage la prog objet. Le code de Delphi est naturel donc facilement assimilable à mon avis. Allez courRrage ...  

Commentaire de ameze le 09/01/2006 13:46:40

decidement,j'ai beau essayer de comprendre,je n'arrive pas..
ca load les clips comme il faut,mais le pbar ne suit pas
comment doisje proceder.faut il que je cree un progressbar?peut on utiliser le composant de flash?
et sur les 3 parties du code,lesquelles doit on modifier?

Commentaire de Loubiou le 09/01/2006 17:28:52

M'Bon tu peux utiliser cette ligne qui est en commentaire est installer un texte qui indique la progression c'est nettement plus pro qu'une barre de chargement (à mon avis) en plus la barre de préchargement va te faire perdre du temps et alourdir le projet en général.
J'ai justement dév ce code pour permettre de charger à la queue leuleu des clips dans le but d'épargner de la bande passante. Alors si tu rajoute une barre de préload et que tu as 20 clips à charger, imagines le rendu.
Tu peux donc utiliser ce code ici : //trace(Movie+" = "+loadedBytes +"/"+totalBytes); utiliser cette fonction pour incrémenter la progression de ta barre.
// trace(cible +" Chargement terminé") de onloadcomplete pour la fin.
Il faut utiliser une progress bar avec le code, pas un composant tout fait qui se met sur un clip car tu n'auras jamais la progressio de visible puisqu'il se charge d'après le nom du clip.
Du coup tu vas précharger avec ma procédure et reprécharger avec la progress bar !
Maintenant c'est toi qui voit.
Franchement si je devais ajouter un truc je ferais comme suis :
Je demanderais d'afficher un clip en mouvenent (par exemple un rond en pointillé) que j'effacerais une fois le clip chargé par onloadcomplete.
J'utiliserais ma fonction pour charger le clip puis déchargerais mais bon ça va devenir hyper lourd.

Commentaire de ameze le 10/01/2006 13:51:13

salut,j'ai essaye et reessayer toute la noche tout ce queje suis arrive c est ceci:
...
mc_Ecout.onLoadProgress = function(cible, loadedBytes, totalBytes) {
var _loaded = Tab_Movie[Tab_Movie[n]].getBytesLoaded();
var _total = Tab_Movie[Tab_Movie[n]].getBytesTotal();
if (_loaded>10) {
percent = Math.round(_loaded*100/_total);
txtcharge = "";
}
//INCREMENTATION DE LA BARRE DE PROGRESSION
barz.gotoAndStop(percent);
//trace(Movie+" = "+loadedByte
...
peut tu me dire si une erreur vient d ici arce que ca ma donne ca (cest le test):
http://perso.wanadoo.fr/amezeworld/siteloader.swf
la barre progresse toute seule ..

Commentaire de mroultabille le 12/05/2006 09:17:24

Bonjour, je cherche désespéramment un script qui me permette de :
- charger un swf dans un mc1 vide sur la scène toto
- quand la lecture du swf et fini,
- lui demander de charger un nouveau swf2 sur la scène toto dans un mc vide2.
je souhaite ne pas unloader mon swf1 car il y a un fondu entre chaque swf.
Ainsi de suite, car j'ai 23 swf à charger les uns "sur" et pas après les autres.

J'ai eu l'impression que votre script allé résoudre mon soucis, mes j'ai fait un test, et les swf arrivent tous ensembles !!??
je doit sûrement faire une mauvaise manip ou alors je n'ai pas compris le script… °+((

Pourriez-vous m'aider svp ?
merci

Commentaire de smoochy le 27/10/2006 13:34:21

tout simplement génial, je mets 20/10
je ne fais pas du flash depuis longtemps et j'ai dû m'accrocher pour comprendre cette source, mais ça en vaut la peine, c'est tellement pratique dès qu'on utilise plusieurs clips que je ne sais pas comment j'ai pu travailler sans avant :-)

Commentaire de Loubiou le 28/10/2006 01:20:46

Merci pour vos encouragements !!!
En effet, je me suis aperçu que Flash chargeait tout en même temps ce qui réduit considérablement la  bande passante.
De plus ce code permet d’alléger sacrément tout en donnant un petit effet.
En général je charge dans cet ordre, le fond, le logo, les animations de fond, la musique … et les boutons. C’est ce qui se passe sur http://www.toutauto.fr

Commentaire de divers436 le 21/11/2006 17:16:48

Super bravo depuis le temps que je cherche et que je fait des essais ça va bien m'aider !!

Commentaire de albator59 le 04/12/2006 23:31:32

Salut,
châpeau bas pour cette belle source !

P'tite question tout de même :
comment faire pour changer l'une des caractéristiques des SWF chargée (alpha, position, etc...)??

Commentaire de Loubiou le 05/12/2006 02:33:06

Pour cela, tu indiques le chemin du clip.
Par exemple tu as charger un swf dans le clip2 du Tab_Clip[....
Tu fait _level0.clip2._alpha = 100; et meme chose pour la postion la taille ...
Tu peux aussi réécrire la fonction dans une classe et passer en paramètre l'alpha, la taille ...

expl function Charge(n, alpha, taille, posX, posY, larg, haut){
et tu récupéres les données passées en param pour faire :
.../...

container._alpha = alpha; etc au lieu de charger en variable global des données de tableaux

}
    

Commentaire de albator59 le 05/12/2006 08:33:02

super cool !
Merci bcq pour ta réponse mais aussi pour ta réactivité !

Commentaire de Loubiou le 13/03/2007 04:05:44

Devant un tel enthousiasme je suis dans l'expectative ...

Commentaire de Loubiou le 13/03/2007 04:09:36

Ce code a bien été utile ici : http://www.lagrandetaverne.com
Je n'ai pas fait de timeline de chargement, l'utilisateur patiente en voyant le site se construire sous ses yeux. On allège encore un peu tout le code. eh oui encore pas mal de modem RTC en France dont à Marly-Gomont ;-))

Commentaire de jphilippev le 24/01/2008 11:34:54

euh juste une petite erreur en survolant le script ligne 64 => cibel => cible sinon ca a l'air cool

Commentaire de GigaCowlJeux le 16/02/2008 17:20:33 10/10

Salutations,

J'ai plusieurs remarques / critiques à faire concernant cette source, en espérant qu'elles seront bien prises :
- Il faut penser à indenter tes sources ! J'avoue avoir eu du mal à restructurer tout ça. Toutefois, une pseudo-identation a été effectuée dans les fonctions de l'écouteur.
- Plusieurs variables ne sont pas utilisées, comme CLIP ou Movie. On peut les effacer pour optimiser le code. ( et ainsi éviter une utilisateur inutile de mémoire )
- Il ne pas oublier de préciser que cette fonction est récursive. En effet une fonction récursive est une fonction qui s'appelle elle même dans sa propre définition. Cela peut avoir des effets catastrophiques si on ne sait pas ce que l'on fait. ( Par exemple, une Boucle infinie si on oublie la condition ... )
- Sur ce point, je ne vois pas du tout l'utilité de rajouter 1 à la taille du tableau. Il suffit de remplacer n<=Tab_Movie.length+1 par n < Tab_Movie.length pour éviter de créer un clip vide nommé undefined. :)

Autrement, je ne vois pas quoi dire de plus. J'ai toutefois mis 10 à cette source bien utile, car non seulement le chargement est plus simple, mais on peut en plus de ça contrôler le bon déroulement des opérations pour ensuite faire des actions sur les clips.

Au revoir,
Poubi. :)

Commentaire de demah le 06/10/2008 19:26:27

Salut c'est super cool ta source mais j'aimerais savoir quel modifiction tu apporterais pour lire chaque swf chargé à un moment donné dans l'animation merci et bravo!!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

chargement aléatoire [ par hobbes92 ] bonjourje cherche un script de chargement aléatoire de clip flashun script simple me permettant de preloader toutes les 10 s un movieclipmerci d avanc demande de script de chargement [ par hamadi_424 ] Bonjour . . .Je voudrais un script de prechargement car j'ai une animation assez grande et pendant l'attend de l'utilisateur il voit qu'elle est entra Probleme chargement loader [ par klssi ] Bonjour a tous. Voila jai un probleme jai l'impression que ma banniere sur mon forum n'apparait que quand les fichier de mes loader son charger. voici Probleme avec n script pour chargement dans dropzone [ par evolutionproject ] bonjour j'ai fait une animation flash de type "coloration d'un objet" , quant je la publie elle marche niquel mais quant je veux l'intégrer dans une a AS3 preload {barre de chargement} => demande d'amélioration de script [ par guyton19 ] Bonjour, Je sollicite votre aide pour un petit probleme de script ayant pour but d'améliorer l'interface du site full flash apres la barre de chargem besoin de votre aide [ par psyca51 ] Bonjour, Je suis nouveau sur se forum alors excusé moi si j'ai pas posté au bonne endroit. Voila j'ai téléchargé un script flash "livre virtuel" Ma connaitre le temps de chargement en millisecondes d'une image externe [ par BBFUNK01 ] Hello, pour un mon diaporama j'utilise un SetInterval() afin de lire mes images en mode "slideshow", dans ma fonction SetInterval() j'attache sur la Problème de chargement de texte en ligne [ par jesuisbrice ] Bonjour, Je viens de créer un site en Flash grace à CS4. J'ai testé le site sur mon ordinateur et tout fonctionne parfaitement, cependant quand chargement d'un clip par loadmovie (AS2) [ par bodegafilms ] Bonjour, Je fais un site pour une photographe et j'utilise le loadMovie pour charger différents clips, mais je n'arrive pas bien à contrôler et à dis flash : Barre de chargement du preloader ne se lance pas [ par samainoa ] [color=purple][size=300]Bonjour à tous [/size] !!!![/color] J'ai un petit problème avec mon preloader, si quelqu'un peu m'aider ça serait cool !!! En


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,231 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales