Trucsweb.com

Flash

Étude de «scroll» ou le défilement Flash

RDFFav

Le défilement sans fin en ActionScript II - Méthode avec duplicateMovieClip

22 avril 2003

Changer les images ou le contenu du «movieClip» pour générer un défilement continu parfait. Exemple de base (4 directions) et exemple interactif basé sur la position de la souris.

Doubler le «movieClip» pour un défilement sans fin
L’astuce de ce défilement consiste à doubler le «movieClip» qui défile. Ce double ou cette copie sera ajouté à son extrémité (droite, gauche, haute ou basse, selon la direction). Ainsi, quand il arrivera au bout, la copie fera en sorte que son défilement se poursuive sans arrêt.

Pour donner la bonne position de départ à la copie, il suffit d’utiliser une combinaison des propriétés (_x, y_, _width, _height selon la direction). Par exemple pour un défilement vers la droite, il faut que la copie se retrouve à la gauche de l’original. Donc, la position _x - la largeur du movieClip original (mc._x-mc._width). Vers la gauche : (mc._x+mc._width) etc. L’instance du «movieClip» de l’exemple est «Contenu1» copiée dans l’instance «Contenu2». Avec ces deux instances, il suffit d’ajuster leurs propriétés _x pour faire un défilement.

// Copie du «movieClip» original
Contenu1.duplicateMovieClip("Contenu2", 1);
// Donner la nouvelle position
Contenu2._x = Contenu1._x - Contenu1._width;

 

Ajustement du défilement
Quand un «movieClip», tant l’original que la copie, sort de la partie visible de l’animation, il faut le déplacer vers l’autre extrémité. Selon le même calcul que la position de départ, basé sur la position X et la largeur du «movieClip». MAIS ATTENTION, puisque ce mouvement est en temps réel, il y aura un petit décalage, celui de l’ajustement de la position de l’autre «movieClip». Pour se sortir du trouble, il suffit d’ajouter cette valeur «d’ajustement». Dans l’exemple suivant, la vitesse du défilement est de 10 pixels par «enterFrame» (soit 150 pixels par seconde). Et bien sûr, ce test doit être fait pour les deux «movieClip».

// Exemple simplifé vers la droite
if (direction==1) {
  if (Contenu1._x<=Contenu1._width) {
    Contenu1._x += 10;
  } else {
    Contenu1._x = Contenu2._x + 10 - Contenu1._width;
  }
  if (Contenu2._x<=Contenu2._width) {
    Contenu2._x += 10;
  } else {
    Contenu2._x = Contenu1._x + 10 - Contenu2._width;
  }
}

Dans le second exemple, la valeur d’ajustement ou «vitesse» sera spécifiée par la position de la souris. Puisque cette valeur est passablement grande pour la vitesse il faut la diviser. J’opte donc aussi pour une variable «vitesse» qui sera d’avantage l’ajustement de la vitesse. (Noter l’utilisation de Math.Floor pour arrondir le résultat).

// Position de la souris - l’ajustement
vitesse = 10;
Math.floor(_xmouse/vitesse);

 

Défilement de base avec 4 directions possibles
Cet exemple peut servir à toutes les sauces, il suffit d’indiquer la vitesse et la direction pour obtenir le défilement continu d’un «movieClip». Voir le script du MovieClip «Bande», les variables «this.direction» et «this.vitesse». La direction peut être 1 (vers la droite) ou -1 (vers la gauche). Pour changer d’image, ouvrir le «movieClip» «Contenu1» et remplacer l’image actuelle par celle de votre choix.

 

Défilement horizontal avec interaction de la souris.
Le défilement, vers la droite ou vers la gauche, est spécifié selon la position X de la souris. Vous pouvez faire un ajustement sur la vitesse «globale» (Voir le script du «movieClip» «Bande», et la variable «this.vitesse»). Pour changer les images, ouvrir le «movieClip» «Contenu1» et simplement remplacer les images actuelles par celles de votre choix. Tout ce qui est ajouté dans ce «movieClip» défilera, un bouton, un autre «movieClip» etc...

Attention, dans mon exemple à télécharger, mes variables «MaxBas» et «MaxHaut» devraient se lire en réalité «MaxDroite» et «MaxGauche», séquelle du défilement vertical ;-). «MaxHaut» est un ajustement si le défilement doit être plus ou moins grand que l’original.

Django (Oznog) Blais, Trucsweb
Dernière mise à jour : 2014-10-02
Partager cette page
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

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

Créer un compte

.
@