ExtendScript 将 unicode 字符解析为文本层
Extendscript parse unicode characters into text layer
我正在尝试编写一个脚本,将字符数组解析为 After Effects 中文本层的后续关键帧。一切正常。只有我想更改函数以读取 unicode 而不是普通文本。
这是我的脚本代码:
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();
这是我要解析的字符串:
\u5c07,\u63a2,\u8a0e,\u53ca,\u5176,\u4ed6
这些都是unicode字符。
我试了一下你的代码。我也无法从文件中读取 unicode 字符。有效的是以 JSON 格式存储数据并解析它。 (在此处获取解析器 https://github.com/douglascrockford/JSON-js)
请参阅下面我修改后的代码。
这是JSON
的数据
["\u5c07","\u63a2","\u8a0e","\u53ca","\u5176","\u4ed6"]
这是修改后的脚本
#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();
我正在尝试编写一个脚本,将字符数组解析为 After Effects 中文本层的后续关键帧。一切正常。只有我想更改函数以读取 unicode 而不是普通文本。
这是我的脚本代码:
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();
这是我要解析的字符串:
\u5c07,\u63a2,\u8a0e,\u53ca,\u5176,\u4ed6
这些都是unicode字符。
我试了一下你的代码。我也无法从文件中读取 unicode 字符。有效的是以 JSON 格式存储数据并解析它。 (在此处获取解析器 https://github.com/douglascrockford/JSON-js) 请参阅下面我修改后的代码。
这是JSON
的数据["\u5c07","\u63a2","\u8a0e","\u53ca","\u5176","\u4ed6"]
这是修改后的脚本
#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();