Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: Probleme tout bête de trait progressif
Envoyé: 14 mai 2004, 10h52 par Oznog
Effectivement il y a un boggue notable décrié partout à ce niveau.
Même en ayant une ligne (ou contour) sans intérieur et en augmentant la largeur (_width) la hauteur va sensiblement augmenter comme s'il s'aggissait d'un élargissement proportionnel (_scale).
C'est domage. Mais il y a d'autre solution, comme le masque mais aussi comme tu le précise le lineto().
Mais attention faut bien le comprendre. Le lineto() permet une ligne d'un point à un autre (du moteto au lineto). Mais d'un coup, c'est sûr qu'il n'y a rien de progressif la denand. C'est à toi d ele gérer manuellement.
L'idée est de faire une ligne de 1 à 2, puis 2 à trois etc et celà en imbriquand un délais.
Le délais peu aussi être fait manuellement, Tu peux le gérer avec un timer mais Flash à le comportement onEnterFrame qui se produit (selon la cadance du Flash) normalement à 12 cadres seconde. Tu aura donc :
1 à 2, 2 à 3, 3, à 4 etc douze fois par seconde, ce qui prioduit l'effet que tu charche.
Voilà un exemple avec le "lineto". Note qu'il est très simple. Dès que le mouvement est plus complexe c'est à adapter à chaque cas.
L'exemple suivant ne prend en compte qu'e l'axe X, avec l'axe Y il faut ajouter un autre test de condition, et autant de test de condition que de changement de direction. Le tout peut extrêmement se complexifier avec des courbe.
// Création d'un clip vide
this.createEmptyMovieClip("ligne",1);
// Avec ce clip faire...
with (this.ligne) {
// Initialisation des variables
// Position de départ axe X.
var x1 = 0;
// Position de fin de l'axe X
var x2 = 200;
// Position de l'axe Y
var y1 = 100;
// Vitesse du dessin
var v = 1;
// Style et couleur de la ligne
lineStyle(1,0x000000,100);
// Positionner à la position de départ
moveTo(this.x1, this.y1);
// Création de la capture du comportement
onEnterFrame = function() {
// Augmente la position (le 1 à 2 ou x à x+vitesse)
this.x1 += thisy1;
// Dessine selon la nouvelle position, un pixel de plus.
lineTo(this.x1, this.y1);
// Si la position de fin est rencontrer
// détruire la saisie du comportement
// arrêtant ainsi le déplacement
// mais aussi question de vider la mémoire.
if (this.x1>this.x2) delete this.onEnterFrame;
}
}
Ciao
Oznog
Réponses
|