Appliquer une expression¶
Objectif : lire et analyser les éléments permettant de travailler avec la sélection utilisateur et une entrée utilisateur.
Avertissement
Les éléments vus précédemment ne seront pas traités à nouveau.
1 – récupérer les .jsx t .json de travail¶
- Télécharger appliquer_expression.jsx (à placer dans le dossier
Scripts
ouScripts/ScriptUI
) - Télécharger exemple.json (à importer dans le projet AE)
2 - indication du .json et du modèle d’expression¶
// nom du fichier json
var footage = 'exemple.json';
// modèle d'expression
var modele_expression = 'var donnees = footage(\'' + footage + '\').sourceData; donnees.{cle_propriete};';
Note
On notera ici la chaîne de caractère 'var donnees = footage(\'' + footage + '\').sourceData; donnees.{cle_propriete};';
et notamment la partie {cle_propriete}
.
Nous remplacerons cette partie de la chaîne plus tard par un élément défini par l’utilisateur.
3 – mise à jour du modèle d’expression¶
// on prend notre bouton, on associe à sa propriété onClick une fonction
// lorsque le bouton sera cliqué,
// la fonction associée à la propriété onClick sera exécutée
bouton.onClick = function () {
// on demande à l'utilisateur la clé à utiliser dans l'expression
var cle = prompt ( 'indiquez la clé demandée', 'clé' );
// on modifie le modèle d'expression en conséquence
expression = modele_expression.replace( '{cle_propriete}', cle );
// on applique l'expression
appliquer_expression( expression );
};
Note
trois points intéressants ici :
- on demande à l’utilisateur une entrée
- on créé une expression à partir du modèle dans lequel on remplace
{cle_propriete}
par l’entrée utilisateur - on appelle la fonction
appliquer_expression
avec l’expression nouvellement créé en paramètre
4 – application de l’expression¶
function appliquer_expression ( expression ) {
/* applique une expression données aux calques textes donnés */
var composition_active = app.project.activeItem;
// si on a aucune composition sélectionnée
if ( !composition_active || !(composition_active instanceof CompItem) ) {
return alert("Aucune composition sélectionnée.");
}
var calques_selectionnes = composition_active.selectedLayers;
// si on a aucun calque sélectionné
if ( calques_selectionnes.length == 0 ) {
return alert("Aucun calque sélectionné.");
}
var calques_texte_selectionnes = [];
// on liste les calques texte
for (var i = 0; i < calques_selectionnes.length; i++) {
if ( calques_selectionnes[i] instanceof TextLayer ) {
calques_texte_selectionnes.push( calques_selectionnes[i] );
}
}
// si on a aucun calque texte sélectionné
if ( calques_texte_selectionnes.length == 0 ) {
return alert("Aucun calque texte sélectionné.");
}
// on applique l'expression aux calques texte sélectionnés
for (var i = 0; i < calques_texte_selectionnes.length; i++) {
calques_texte_selectionnes[i].text.sourceText.expression = expression ;
}
}
Note
Ici encore, trois éléments dans la fonction appliquer_expression
:
- une boucle sélectionne les calques texte uniquement
- Si aucun calque texte : message et fin de la fonction
- si des calques, boucle pour modifier leur propriété
text.sourceText.expression
, laquelle se voit assigner l’expression en paramètre de la fonction.