TUTORIELS 
Un preloader en ActionScript sous Flash MX

Page 1 | 2 | 3

Indiquer à l'internaute le temps restant avant la fin du chargement d'une animation est essentiel: une méthode pour intégrer ce service dans vos propres créations.
 (31 mars 2003)
 

Suite à notre première approche des preloaders, qui était pour le moins basique, nous allons maintenant voir deux autres ajouts pratiques pour vos visiteurs...

Monter la barre un peu plus haut
L'un des effets les plus fréquents (et les plus demandés) d'un preloader est une simple barre dont la taille augmente en fonction du nombre d'octets chargés. C'est en effet l'un des meilleurs moyens d'indiquer au visiteur la vitesse de préchargement, ce petit graphique combinant des informations directement accessibles comme le pourcentage d'octets chargés ou encore la vitesse du chargement (et donc, le temps restant estimé)

Ajoutons à cela le fait qu'un graphique est beaucoup plus "visuel" qu'une ligne de texte, et vous comprenez le succès des "barres de chargement". Voici comment faire les vôtres.

Partez du preloader que nous avons créé précédemment. Sélectionnez toutes les premières images de vos calques et appuyez sur F5: ceci aura pour effet de placer une image vide entre les deux premières images-clés.
Créez un clip (ctrl-F8 ou pomme-F8), et placez un rectangle (peut importe sa taille ou sa couleur). Créez un second clip contenant lui aussi un rectangle de couleur différente.
Placez ces deux clips n'importe où sur la première image-clé du calque preloader, et nommez-les respectivement preload et complet. Sélectionnez complet avec la souris et placez-le en arrière-plan (avec le menu Modification/Réorganisation/Mettre à l'arrière-plan, ou ctrl/pomme-majuscule-flêche vers le bas).
Placez maintenant le code suivant sur la première image-clé sur calque actions:

(image-clé 1 du calque actions)
Stage.scaleMode = "exactFit";
_root.preload._x = 0;
_root.complet._x = 0;
_root.preload._y = 10;
_root.complet._y = 10;
_root.preload._height = 2;
_root.complet._height = 2;
_root.preload._width = 0;
_root.complet._width = Stage.width;

Vous voyez qu'ici, comme pour notre horloge, nous utilisons directement ActionScript pour donner les tailles et positions des occurrences sur la scène. En effet, _x et _y nous permettent de positionner nos éléments sur la scène (nous les mettons à gauche de la scène, et à 10 twips du haut de celle-ci), tandis que _height et _width nous permettent de régler leurs tailles (2 twips de haut pour les deux, zéro twip de large pour preload, et complet est de la même largeur que la scène (en utilisant Stage.width)).
Vous pouvez maintenant comprendre pourquoi nous devons placer une image vide entre les deux premières images-clés du preloader: nous devons initialiser certaines valeurs avant de lancer la boucle entre les images 2 et 3...
De son côté, la ligne Stage.scaleMode = "exactFit"; nous permet de spécifier que la scène doit s'adapter exactement à la taille du navigateur.

Il ne nous reste plus qu'à reprendre notre script (maintenant sur l'image 3 du calque actions) en ajoutant une seule ligne (ici en gras):

(image-clé 3 du calque actions)
if (_root.getBytesLoaded() < _root.getBytesTotal())
  {
  _root.affichage.text = "Chargement en cours: "
  + Math.floor(_root.getBytesLoaded())
  + " octets chargés sur "
  + Math.floor(_root.getBytesTotal())
  + " au total, soit "
  + Math.floor(_root.getBytesLoaded() / _root.getBytesTotal() * 100)
  + "%.";
  _root.preload._width = (_root.getBytesLoaded()/_root.getBytesTotal()) * Stage.width;
  prevFrame();
  play();
  }

Vous voyez qu'ici, en plus d'afficher plusieurs informations dans le champ affichage, nous modifions la largeur de preload en fonction du nombre d'octets chargés. Notre petite routine divise le nombre d'octets chargés par le nombre total d'octets, et multiplie le tout par la largeur de la scène. complet étant placé juste derrière preload, c'est lui qui servira de référence: une fois tous les octets chargés, preload aura la même largeur que la scène, donc la même qu'affichage...

Page 1 | 2 | 3

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page