Scripting/Interface/Exemple

Exemple

Cette partie montre un exemple complet de script proposant une interface utilisateur. Ce script va créer la palette suivante ainsi que les fonctionnalités associées aux deux boutons.

exemple d'interface

Exemple d'interface

Le code

On commence par regarder le code au complet pour avoir un apercu global.

// Cette fonction affiche la description du script.
function aboutBtn_OnClick()
{
   var aboutText = "\"Démo.jsx\".\r\rCrée un solide.";
   alert(aboutText);
}

// Cette fonction crée un solide de couleur aléatoire.
function solidBtn_OnClick()
{
   var myProj = app.project;
   if (!myProj) // pour AE 6.5 uniquement
   {
      alert("Ouvrez un projet.");
      return;
   }
   var myComp = myProj.activeItem;
   if (!myComp || !(myComp instanceof CompItem))
   {
      alert("Activez une composition.");
      return;
   }
   var W = myComp.width;
   var H = myComp.height;
   var PAR = myComp.pixelAspect;
   var R = Math.random();
   var G = Math.random();
   var B = Math.random();
   app.beginUndoGroup("Démo.jsx");
   myComp.layers.addSolid([R,G,B],"Solide",W,H,PAR);
   app.endUndogroup();
}

// Script principal (création de la palette)
var pal = new Window("palette","Démo",[0,0,150,60]);
pal.aboutBtn = pal.add("button",[115,5,140,25],"?");
pal.solidBtn = pal.add("button",[10,30,140,50],"Créer");

pal.aboutBtn.onClick = aboutBtn_OnClick;
pal.solidBtn.onClick = solidBtn_OnClick;

pal.center();
pal.show();

Explications

Lorsqu'un script est exécuté, l'évaluation commence toujours par la partie principale, que l'on appelle parfois en programmation le "point d'entrée" ou le "main". Dans ce script, le point d'entrée est représenté par la phase de construction de la palette, c'est-à-dire ici tout ce qui n'est pas défini dans une fonction. Les fonctions, quant à elles, s'exécutent uniquement lorsqu'une instruction fait appel à elles. Les explications suivront le sens de parcours du script.

Script principal

On définit une variable "pal" qui représente un objet Window de type palette. On spécifie directement dans sa déclaration le nom à afficher dans la barre de titre ainsi que la taille de la palette. On ajoute ensuite à cet objet deux éléments de type button grâce à la méthode add(). Ces deux éléments étant des boutons, on peut leur assigner une fonction qui sera exécutée lorsqu'un click surviendra (ceci est parfois appelé la "gestion d'évènements"). Les deux dernières lignes permettent un affichage centré de la palette.

Les fonctions

La première fonction est appelée lorsque l'on clique sur le bouton d'aide ("?"). Cette fonction utilise alert() pour afficher la description du script. La deuxième fonction est appelée lorsque l'on clique sur le bouton "Créer". Cette fonction commence par vérifier qu'un projet est ouvert (pour les versions supérieures à 6.5, cette étape est inutile car un projet est automatiquement créé à l'ouverture du programme) et qu'une composition est activée. Si cela n'est pas le cas, un message d'erreur est affiché et l'utilisation du mot-clé return permet de sortir immédiatement de la fonction et de ne pas évaluer ce qui suit. Lorsqu'une composition est bien activée, un solide de couleur aléatoire et possédant les mêmes caractéristiques que la composition (taille, format des pixels) est créé. Notons que la création du solide a été encadrée par les deux instructions beginUndoGroup() et endUndoGroup() de telle sorte qu'elle puisse être annulée facilement (par un Ctrl+Z par exemple).