0

我正在为这个问题拉头发。我正在尝试使用包含字符串的单独文件来填写我的 After Effects 组合中的某些信息。

这是我现在文件的内容(用于测试):

var Comp1TitleLayer = "Some Text";
var Comp1SubTitleLayer = "Some More Text";

现在,我尝试在 TitleLayer 中使用以下表达式Source Text

var myPath = "~/Desktop/source.txt";
$.evalFile(myPath);
try {
    eval(thisComp.name + thisLayer.name);
} catch (err) {
    "Missing";
}

现在,运行表达式时出现以下错误:

Error at line 1 in property 'Source Text' of layer 1 ('TitleLayer') in comp 'Comp1'.  Syntax error.

我在网上看到的所有例子都给出了这个表达。我也试过这个:

#include "~/Desktop/source.txt";
eval(thisCompl.name + thisLayer.name);

但我得到同样的错误。我只是在这里做错了什么吗?

4

1 回答 1

0

如果这是您的文本文件中的内容(并且它是未格式化的文本),那么您正在实例化两个变量,并且它就像您在表达式中那样工作。因此你可以这样做:

 $.evalFile("~/Desktop/source.txt");
"First variable: " + Comp1TitleLayer + "\r" + 
"Second variable: " + Comp1SubTitleLayer;

它应该可以工作(就像在我的机器上一样)。

在您的 try 块中,您不需要 eval (但您也没有在文件中使用您的数据):

var myPath = "~/Desktop/source.txt";
$.evalFile(myPath);
try {
    thisComp.name + thisLayer.name;
} catch (err) {
    "Missing";
}

这显示了如何使用 evalFile() 以及为什么您可能会收到“Missing”,但不是为什么您可能会收到语法错误。你确定那是未格式化的文本而不是 rtf 什么的吗?

[编辑] 所以事实证明在 Mavericks 上存在这个问题(我原来的帖子是使用 OSX 10.6.8)。如果你使用这个结构,它就可以工作(当然,假设 source.txt 中的代码是有效的):

var myPath = "~/Desktop/source.txt";
try {
 $.evalFile(myPath);
} catch (err) {
    "Missing";
    }
try {
    thisComp.name + thisLayer.name;
} catch (err) {
    "Missing";
}
于 2014-05-14T15:54:29.100 回答