Scripting/Introduction/Langage utilisé

Langage utilisé

Un script After Effects utilise le langage de programmation JavaScript. Pour connaître en détail les spécifications techniques, mots-clés et opérateurs de la norme ECMA prise en charge par le moteur de création de script d'After Effects, on peut consulter Ecma-262.

Les mots-clés courant du langage JavaScript comme ceux vus dans la partie Expressions sont valables pour les scripts. On retrouvera par exemple les boucles "for/while", les instructions conditionnelles "if/else", les tableaux, les chaînes de caractères, etc. Néanmoins, le langage des scripts est un langage beaucoup plus riche que celui des expressions.

Les expressions et les scripts sont certes basés sur le même langage mais leur fonctionnement et leur utilisation sont clairement différents. Avant d'aller plus loin, regardons les distinctions fondamentales entre un script et une expression.

Script versus Expression

Une expression est un ensemble d'instructions écrit sur une propriété d'un calque pour lui attribuer une valeur. Une expression est bien souvent un lien dynamique entre différentes propriétés. Une expression est évaluée à chaque image de l'animation et ce qui est calculé à une image est immédiatement oublié à l'image suivante (elle n'a pas de mémoire). Une expression n'est pas capable de créer un objet, elle ne peut pas, par exemple, créer un calque.

Un script est externe à After Effects. Il est écrit dans un éditeur à part, il est indépendant et réutilisable à volonté. On l'exécute, il fait son travail et on reprend la main. Il permet de contrôler l'application, il peut créer des objets (interface utilisateur, fenêtres, compositions, calques, effets, etc), générer des animations à l'aide d'images clés ou d'expressions, automatiser une procédure, accéder à la file de rendu, etc. Son spectre est global, il peut garder en mémoire les données qu'il veut. Mais le script est d'une certaine manière statique: il n'agit qu'au moment où il est exécuté.

On peut utiliser les expressions sans trop connaître le JavaScript, par exemple simplement en liant des propriétés avec le sélecteur d'expressions ou en écrivant une opération mathématique pour calculer une valeur. Le scripting demande plus d'efforts et une meilleure compréhension du langage. Alors qu'une expression tient souvent en moins de cinq lignes, un script est, en général, beaucoup plus long et il peut être assimilé à un programme informatique à part entière.

Bien qu'il y ait certaines choses qui peuvent être réalisées à la fois avec une expression et à la fois avec un script, en général le choix va se porter clairement vers l'un ou l'autre en fonction de ce que l'on souhaite faire.

Les variables

Si l'on a déjà examiné un script, on a pu constater que le terme var est très souvent utilisé (mais n'est pas obligatoire du point de vue syntaxique). Il s'agit de la syntaxe JavaScript pour déclarer une variable locale. La majorité des scripts est constituée de fonctions ("locales") et du script principal ("global"). Les fonctions sont introduites par le mot-clé function suivi du nom de la fonction (qui peut être omis dans certains cas), de la liste de ses paramètres entre parenthèses (cette liste peut être vide) et d'un ensemble d'instructions dans un bloc délimité par des accolades.

Dans une fonction toute variable déclarée avec le terme var a une portée locale. En d'autres termes elle ne pourra pas perturber une variable portant le même nom et qui serait utilisée dans la partie principale du script. En revanche, les variables déclarées dans la partie principale du script sont globales (avec ou sans var). Celles-ci sont "visibles" ou modifiables partout dans le script.

Remarques

Dans les scripts que l'on va voir dans les parties suivantes, le terme var n'apparaîtra pas car ces scripts seront en général très courts (bien souvent représentés par une seule instruction pour illustrer l'utilisation d'une fonctionnalité du scripting dans After Effects), on n'y définira pas de fonctions et on prendra soin de toujours affecter une valeur aux variables avant de les utiliser afin d'éviter d'éventuels désagréments. Lorsque l'on est amené à écrire des scripts plus élaborés, la déclaration des variables est en général toujours introduite par var (cela rend également le script plus lisible).

Il est d'usage de donner un nom explicite aux variables. Pour des raisons de clarté je noterai en général les variables en ajoutant un préfixe my pour indiquer qu'il s'agit d'une variable et préciser qu'il ne s'agit pas d'un mot-clé du scripting. J'écrirai par exemple myProj une variable représentant le projet en cours, myComp la composition, myLayer un calque en particulier, etc. On peut bien entendu choisir les noms que l'on veut tant qu'ils n'interfèrent pas avec un mot-clé JavaScript ou un mot-clé du scripting.