Travailler avec des expressions¶
Voir aussi
La documentation sur les expressions nous indique que celles-ci sont partiellement supportées. Les fonctions telles que linear
, velocityAtTime
et wiggle
ne sont pas supportées.
support du javaScript¶
Imaginons que nous souhaitions utiliser, plutôt que des variables d’After Effects telles que time
, des éléments du navigateur ?
Avertissement
Je ne suis pas parvenu à trouver de solution satisfaisante sur ce point. Ce qui ne signifie pas que cela n’existe pas. Je vous expose donc ci-dessous le fruit de ma recherche.
échecs¶
“use javascript”¶
La documentation précise qu’il est possible d’utiliser la chaîne de caractère “use javascript” pour pouvoir utiliser du javascript : je n’ai obtenu aucun résultat de la sorte.
forcer l’ordre des choses¶
L’ajout de références à des variables non définies dans After Effects ou dans l’expression entraîne une erreur, et l’expression est alors ignorée.
Imaginons par exemple que master.js embarque le code suivant :
// on déclare notre variable
var pourcentage_largeur = 0;
document.body.addEventListener( 'mousemove', obtenir_pourcentage_largeur, false );
function obtenir_pourcentage_largeur ( evenement ) {
/* calcul la position du curseur sur la vue sous forme de %
et l'assigner à pourcentage_largeur */
pourcentage_largeur = evenement.clientX / window.innerWidth * 100;
}
Nous souhaiterions utiliser cette valeur pour contrôler un paramètre de notre animation JavaScript. Mais si nous utilisons l’expression qui suit, nous aurons une erreur, et l’expression ne sera pas exportée.
// n'existe pas = erreur = pas d'export
pourcentage_largeur
Ici, cela ne fonctionnera pas. Par contre :
// la variable est déclaré = pas d'erreur = export
// mais la valeur sera toujours égale à 0…
var pourcentage_largeur = 0;
pourcentage_largeur
L’astuce va consister à ouvrir le fichier json, recherche la mention var pourcentage_largeur = 0;
et à la supprimer. L’expression utilisera alors la valeur de l’objet globale, définie dans master.js et redéfinie à chaque frame.