|
|
||
| Tutoriaux : déplacement dynamique d'un clip en suivant une courbe tracée avec la fonction curveTo. | ||
|
1. Introduction |
||
|
||
| 2. Dans la bibliothèque | ||
1) Dans la bibliothèque, vous créez un clip quelconque : par exemple une croix de 12 pixels de largeur, de 12 pixels de hauteur, centrée verticalement et horizontalement. Placez ensuite 3 occurrences de ce clip sur la scène principale et nommez les "pt1", "pt2" et "pt3" dans le panneau propriétés. 2) Dans la bibliothèque, créez un second clip : un disque rouge de 5 pixels de diamètre, centré verticalement et horizontalement. Placez une occurrence de ce clip sur la scène principale et nommez le "pt". Le déplacement de ce clip sera obtenu en plaçant le code ci-dessous dans le panneau action de l'image clé n°1 de la scène principale. |
||
| 3. Le code et l'animation | ||
|
||
| 4. Le code avec ses commentaires | ||
| On initialise 2 variables : dt permet de régler la vitesse de déplacement du clip "pt". t est un paramètre qui varie entre 0 et 1 et qui permet de définir la position du clip "pt" sur la courbe obtenue avec la fonction curveTo. | ||
| t = 0; dt = 0.02; |
||
| La fonction "barycentre" est la définition mathématique de la fonction curveTo ! | ||
| barycentre = function(a, b, c, t) { return (1-t)*(1-t)*a + 2*(1-t)*t*b + t*t*c; } |
||
| Les lignes suivantes permettent de tracer en rouge la courbe qui relie le clip "pt1" au clip "pt3" avec "pt2" comme ancre : lire la documentation pour plus de précisions. | ||
|
this.lineStyle(0, 0xFF0000, 100); this.moveTo(pt1._x, pt1._y); this.curveTo(pt2._x, pt2._y, pt3._x, pt3._y); |
||
| A chaque image de la scène principale... | ||
| onEnterFrame = function() { | ||
| On ajoute la valeur de dt à la variable t. | ||
| t += dt; | ||
| L'abscisse du clip "pt" est le barycentre des abscisses des clips "pt1", "pt2" et "pt3" affectées respectivement des masses (1-t)², 2(1-t)t et t². | ||
| pt._x = barycentre(pt1._x, pt2._x, pt3._x, t); | ||
| Idem pour l'ordonnée du clip "pt". | ||
| pt._y = barycentre(pt1._y, pt2._y, pt3._y, t); | ||
| Si t devient supérieur à 1 ou inférieur à 0 alors on change le signe de dt. | ||
| if(t >= 1) {t = 1; dt *= - 1;} else { if(t <=0) {t = 0; dt *= -1;} } |
||
| fin de la fonction. | ||
| } | ||
| 5. Pour aller plus loin | ||
- Comme dans le précédent tutoriel, on peut remarquer que le clip "pt" ne se déplace pas à vitesse constante... Il faut donc adapter ce script si vous voulez un mouvement uniforme. - On peut compliquer le problème : désormais vous voulez coder le déplacement d'un clip suivant une trajectoire définie par plusieurs appels à la fonction curveTo. Dans ce cas comment faire ? Comme d'habitude, il suffit de lire le tutoriel suivant ! |
||
|
|