Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: ClipTexte défilant, code
Envoyé: 30 mai 2004, 11h27 par dada
à l'adresse que tu indiques, ce n'est pas vraiment le texte qui défile dans un champ, mais c'est le CHAMP qui DEFILE. Si c'était le scroll du texte qui défilait, çà aurait un rendu beaucoup moins fluide.
Ici, je pense qu'il s'agit d'un champ de texte placé dans un clip qui défile sous un masque.
.... 1 heure plus tard ;) ....
ahh Flash, quand tu nous tiens ... ;-)
je me suis pris au jeu et j'ai pondu un ptit script qu'il suffit de placer sur la premiere image du scénario.
Il créé un clip d'ensemble dans lequel il met :
- un clip contenant un champ de texte
- un clip carré servant de masque
une fonction de défilement associée au rollOver et RollOut permet le défilement du clip sous le masque.
Je pense que tout est expliqué dans les commentaires.
-----------------------------------------
// Texte à afficher :
ContenuTexte = "Si vous voyez un texte qui défile\ret qui s'arrête quand on passe au dessus\ralors : çà marche !! ;-)";
// Création d'un clip contenant tout le reste (c'est plus propre et pratique)
this.createEmptyMovieClip("ConteneurEnsemble", 1);
// Pour placer le texte dans la page, il faut agir sur ce clip :
with (this.ConteneurEnsemble) {
_x = 100;
_y = 100;
}
// Création du clip qui contient le champ de texte
this.ConteneurEnsemble.createEmptyMovieClip ("ConteneurTexte",1);
// Création du champ de texte dans le clip
this.ConteneurEnsemble.ConteneurTexte.createTextField ("ChampTexte",2, 0, 0, 150, 50);
// autosize pour que la taille du champ de texte s'ajuste au texte contenu (en largeur)
this.ConteneurEnsemble.ConteneurTexte.ChampTexte.autoSize = "left";
// On applique le texte au champ texte
this.ConteneurEnsemble.ConteneurTexte.ChampTexte.text = ContenuTexte;
// plus besoin de cette variable: on l'efface
delete ContenuTexte;
// Création du clip vide Masque
this.ConteneurEnsemble.createEmptyMovieClip ("Masque",3);
// On dessine un carré de la taille du ChampTexte dans le masque
with (this.ConteneurEnsemble.Masque) {
lineStyle(); // aucune ligne
beginFill(0x000000); // remplissage noir
// on utilise largeur et hauteur du clip contenant le champ texte (l'autosize influant dessus)
// si on veut que le masque soit plus petit que le texte(en hauteur), il faut agir sur les coordonnées des 3 prochaines lignes(*)
lineTo (this.ConteneurEnsemble.ConteneurTexte._width,0);
lineTo (this.ConteneurEnsemble.ConteneurTexte._width,this.ConteneurEnsemble.ConteneurTexte._height);// (*)par exemple rajouter "-50" à "_ height" ici
lineTo (0,this.ConteneurEnsemble.ConteneurTexte._height); // (*)et là
lineTo (0,0);
}
// on applique le masque au clip ConteneurTexte
this.ConteneurEnsemble.ConteneurTexte.setMask(this.ConteneurEnsemble.Masque);
// Fonction pour faire monter le clip du ChampTexte
// Paramètre "Pas": Le nombre de pixels de déplacement à chaque image
// Paramètre "Limite": Le nombre de pixel que l'on rajoute à la disparition avant que le texte ne réaparaisse en bas
MovieClip.prototype.MonterClipTexte = function (Pas, Limite) {
// On attache les variables à ce clip
this. Pas = Pas;
this.Limite = Limite;
// On céé une boucle EnterFrame
this.onEnterFrame = function () {
with (this) {
// On diminue la coordonnée Y de 'this' (ConteneurTexte) de 'Pas' pixel
this._y -= Pas;
// Quand le clip ConteneurTexte disparait, il faut remettre le clip en dessous (en Y) du masque
if (this._y < (-this._height - Limite)) {
this._y = this._height;
}
}
}
}
// ROLL OUT
this.ConteneurEnsemble.ConteneurTexte.onRollOut = function () {
this.MonterClipTexte(1, 50);
}
// ROLL OVER
this.ConteneurEnsemble.ConteneurTexte.onRollOver = function () {
delete this.onEnterFrame;
}
// On envoie le défilement pour la premiere fois
this.ConteneurEnsemble.ConteneurTexte.MonterClipTexte(1, 50);
----------------------------------------
Si tu as besoin de précisions, n'hésites pas, j'avais besoin de faire un truc comme çà en plus, c'était l'occasion ou jamais ;)
D'ailleurs, Oznog a fait plusieurs tutoriels sur le défilement (clips, textes). Le code ci-dessus ne fonctionne qu'à partir de FlashMX. Si tu as Flash5, il vaut mieux que tu regardes les tut' d'Oznog.
dada
Réponses
|