Bon ok je vais la faire avec les sous-titres
(et au passage j'ai simplifié l'expression) :
Ce que tu veux faire, c'est affiche un chronomètre, disons par exemple au format HH:MM:SS
exemple: 11:58:20
Pour affiche un texte dans After Effects c'est facile, il suffit de créer un calque texte, de saisir le texte à afficher, de définir la police, l'espacement des caractères... (via le panneau caractère).
Ton problème, c'est juste de faire varier le texte à afficher, pour que ton chrono avance/augmente.
Techniquement, le texte affiché par un calque texte est stocké dans la propriété "
Texte source" (que l'on désigne par
text.sourceText dans le langage des expressions, au passage), donc c'est cette propriété qu'il faut faire varier).
Pour ça, le mieux c'est d'utiliser une expression, celle que je t'ai donnée plus haut.
(Il y a un autre moyen, c'est de se faire chier à faire varier la valeur du texte image par image ^^...)
Cette expression est assez simple, je commence par créer une variable duree dans laquelle je vais enregistrer la durée de mon chrono (qui ira donc de 0 à duree).
Quand on programme on exprime toujours le temps en secondes, en l'occurrence, duree = 12*3600 (1 heure = 3600 secondes, donc 12 heures = 12*3600 secondes) :
- Code: Tout sélectionner
duree = 3600*12; // en secondes
Au passage, les expressions s'affectent toujours à des propriétés, en cliquant en maintenant la touche Alt sur le petit chrono de ladite propriété, ici : Texte source (je le rappel au cas où ^^).
cf
http://www.finalclap.com/tuto/cours-aft ... ssions-11/Bien, c'est un début, mais il nous manque encore quelque chose d'essentiel : le moyen de contrôler la valeur de notre texte source en fonction du temps.
Pour ça, on utilise un effet glissière, que l'on applique au calque texte.
La glissière est un effet un peu particulier d'After Effects, cet effet ne modifie en rien le calque auquel il est appliqué
Il a juste une propriété "Curseur", qui est tout simplement un chiffre à laquelle on donne la valeur qu'on veut, et qu'on peut animer avec des images clés, comme n'importe quelle propriété dans After Effects (comme la position, orientation, échelle, opacité...........).
Donc l'idée c'est d'utiliser cette glissière pour contrôler l'avancement du chrono. On va dire que le Curseur contient le pourcentage d'avancement du chrono :
Quand Curseur = 0, le chrono est à 0% (au début)
Quand Curseur = 100, le chrono est à 100% (à la fin), il vaut donc 12*3600
Il suffit de créer 2 clés d'animation, une où Curseur vaut 0, et une autre ou Curseur vaut 100, la valeur de Curseur varie toute seule en fonction du temps, et c'est grâce à ces 2 petites images clé qu'on va pouvoir définir quand commence le chrono, et quand il s'arrête.
Maintenant reste à récupérer la valeur de cette glissière dans une variable que j'appelle pourcentage notre expression :
- Code: Tout sélectionner
duree = 3600*12;
pourcentage = effect("countdown_percent")("Curseur");
time_walk = Math.floor( duree * pourcentage / 100 );
text.sourceText = time_walk;
Le seul truc un peu difficile dans cette expression c'est time_walk.
Je m'en sers pour connaître la valeur du chrono (en secondes), à l'instant courant.
Pour ça je me base sur la durée totale du chrono (12*3600 secondes), et aussi sur la valeur de la glissière (pourcentage).
Par exemple, quand pourcentage vaut 50, on est à la moitié du chrono, soit 21000 secondes :
(12*3600) * 50 / 100 = 21000
Math.floor sert juste à arrondir à l'entier inférieur, au cas ou le résultat du calcul duree * pourcentage / 100 soit un nombre à virgule.
Après j'affiche time_walk en le mettant dans text.sourceText.
À ce stade le chrono fonctionne, il affiche le chrono, mais en secondes :s
Il ne reste plus qu'à convertir ce nombre de secondes en heures, minutes et secondes.
Pour ça je fais quelques divisions avec reste :
- Code: Tout sélectionner
reste = time_walk
// 1. Extraction des heures
nb_hour = Math.floor(reste/3600);
reste = reste%3600
// 2. Extraction des minutes
nb_min = Math.floor(reste/60);
reste = reste%60;
// 2. Extraction des secondes
nb_sec = reste;
Finalement, j'utilise une petite bidouille qui permet d'ajouter les 0 devant les minutes et secondes (c'est pour par exemple affiche 10:03:09 au lieu de 10:3:9) :
- Code: Tout sélectionner
str_hour = nb_hour;
str_min = ('0' + nb_min).slice(-2);
str_sec = ('0' + nb_sec).slice(-2);
Et y'a plus qu'à afficher tout ça dans notre texte source :
- Code: Tout sélectionner
text.sourceText = str_hour+':'+str_min+':'+str_sec;
Dans ton cas, il faut que duree = 3600*12 (comme ton chrono dure 12 heures), et il te suffit de jouer avec les 2 images clé 0% et 100% de la glissière (en les déplacent sur la timeline) pour que ton chrono s'anime sur la bonne durée (20 secondes).
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol