After Effects Expression 可以读取文件的内容吗
Can an After Effects Expression read a file's contents
使用底部显示的 ExtendScript,我能够打开 YAML 文件并解析它。
但是,当将相同的代码输入 After Effects 表达式时,它在第 2 行失败,显示 "Function File is undefined"。
表达式能否打开文件并以某种方式读取其原始内容?
我知道 $.evalFile 可以读取文件,但它会评估所有内容,我希望能够只读取文件的原始内容。就我而言,我希望将内容传递给 YAML 解析器。
1 $.evalFile("yaml.js");
2 var file = File("/tmp/example.yml");
3 if (file.exists){
4 file.open('r');
5 var contents = file.read();
6 var myObject = YAML.eval(contents);
7 alert myObject.company.name
8 }
我认为这不可能也不明智。每帧都会评估一个表达式。所以你会在每一帧读入并评估你的文件。
您可以尝试将文件内容存储在文本图层的源文本 属性 中,然后从那里进行评估。但是,这也会在每一帧发生。
晚了将近 2 年,但是是的,您可以从 After Effects 表达式中获取 $.evalFile。您得到一个 Function File is undefined 因为 Function 在表达式中不作为对象存在。 $.evalFile returns 文件的文本数据直接作为字符串。仅供参考,在表达式中你必须使用绝对文件路径,并且没有内置的 YAML 解析器用于表达式。
使用底部显示的 ExtendScript,我能够打开 YAML 文件并解析它。
但是,当将相同的代码输入 After Effects 表达式时,它在第 2 行失败,显示 "Function File is undefined"。
表达式能否打开文件并以某种方式读取其原始内容?
我知道 $.evalFile 可以读取文件,但它会评估所有内容,我希望能够只读取文件的原始内容。就我而言,我希望将内容传递给 YAML 解析器。
1 $.evalFile("yaml.js");
2 var file = File("/tmp/example.yml");
3 if (file.exists){
4 file.open('r');
5 var contents = file.read();
6 var myObject = YAML.eval(contents);
7 alert myObject.company.name
8 }
我认为这不可能也不明智。每帧都会评估一个表达式。所以你会在每一帧读入并评估你的文件。
您可以尝试将文件内容存储在文本图层的源文本 属性 中,然后从那里进行评估。但是,这也会在每一帧发生。
晚了将近 2 年,但是是的,您可以从 After Effects 表达式中获取 $.evalFile。您得到一个 Function File is undefined 因为 Function 在表达式中不作为对象存在。 $.evalFile returns 文件的文本数据直接作为字符串。仅供参考,在表达式中你必须使用绝对文件路径,并且没有内置的 YAML 解析器用于表达式。