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 解析器用于表达式。