2016-02-24 6 views
0

J'essaie d'écrire un script qui analyse un tableau de caractères dans les images clés suivantes d'un calque de texte dans After Effects. Tout fonctionne. Seulement je voudrais changer la fonction pour lire unicode au lieu du texte normal.Extendscript analyse les caractères Unicode en calque de texte

Voici mon code pour le script:

var textLayer = currentComp.layers.addText("test"); 
     textLayer.name = "score"; 
     textLayer.position.setValue([50,500]); 

     //Chose the txt with the array 
     var myFile = File.openDialog("Navigate to keyframe file."); 
     myFile.open("r"); 

     var myLine = myFile.readln(); 
     var keyValues = myLine.split(",") 

     var prop1 = app.project.item(1).layer(1).property("ADBE Text Properties").property("ADBE Text Document"); 

     var arrayLength = keyValues.length; 

    //Keyframe Loop 
    app.beginUndoGroup("Keys"); 

     for(var i=0; i<arrayLength; i++){ 
     prop1.setValueAtTime([i]/25,keyValues[i]); 
     } 
    app.endUndoGroup(); 

Et ceci est la chaîne que je suis en train d'analyser:

\u5c07,\u63a2,\u8a0e,\u53ca,\u5176,\u4ed6 

Ce sont tous les caractères unicode.

+0

Pouvez-vous faire bouillir votre extrait de code vers le bas si quelqu'un sans la police et sans un fichier texte peut l'exécuter? Ou au moins fournir le fichier ou une chaîne que vous essayez d'analyser? – fabianmoronzirfas

+0

@fabiantheblind fait :) – vinni

Répondre

1

J'ai joué un peu avec votre code. Je ne pouvais pas non plus lire les caractères Unicode du fichier. Ce qui fonctionnait est de stocker les données dans un format JSON et de les analyser. (Obtenez l'analyseur ici https://github.com/douglascrockford/JSON-js) Voir mon code modifié ci-dessous.

Ce sont les données que JSON

["\u5c07","\u63a2","\u8a0e","\u53ca","\u5176","\u4ed6"] 

Ceci est le script modifié

#include "json2.js" 
// use json parsers 
// get it here https://github.com/douglascrockford/JSON-js 
var main = function() { 
    var currentComp = app.project.items.addComp("test", 800, 600, 1, 10, 25); // add a comp 
    var textLayer = currentComp.layers.addText("test"); 
    textLayer.name = "score"; 
    textLayer.position.setValue([50, 500]); 

    //Chose the JSON with the array 
    var myFile = File.openDialog("Navigate to keyframe file."); 
    if (myFile === null) return; // stop if user cancels 
    myFile.open("r"); 
    var content = myFile.read();// read the whole file 
    var keyValues = JSON.parse(content);// parse its content, dont use eval 
    // rest is as before 
    var prop1 = app.project.item(1).layer(1).property("ADBE Text Properties").property("ADBE Text Document"); 
    // var arrayLength = keyValues.length; // dont need this 
    //Keyframe Loop 
    app.beginUndoGroup("Keys"); 
    for (var i = 0; i < keyValues.length; i++) { 
    prop1.setValueAtTime([i]/25, keyValues[i]); 
    } 
    app.endUndoGroup(); 
} 
main(); 
+0

merci! fonctionne parfaitement – vinni

+0

salut fabian, le script fonctionne parfaitement, mais j'ai rencontré des problèmes avec des caractères japonais (utf-16 si je l'ai bien compris) des caractères comme "\ u3402 \ ue0101". L'encodage standard dans json semble être utf-8 (http://tools.ietf.org/html/rfc4627#section-3) Je peux trouver comment le changer. Peut-être que vous avez une idée? Merci! – vinni

+0

Peut-être les lire comme ça aide? 'keyValues ​​[0] .toString (16)' – fabianmoronzirfas