表达式的语法错误

时间:2014-05-07 19:47:24

标签: expression after-effects

我正在解决这个问题。我正在尝试使用包含字符串的单独文件来填充After Effects comp中的某些信息。

以下是我文件的内容(用于测试):

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);

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

1 个答案:

答案 0 :(得分: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或其他什么吗?

<强> [编辑] 所以事实证明小牛队有一个问题(我原来的帖子是使用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";
}