我正在解决这个问题。我正在尝试使用包含字符串的单独文件来填充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);
但我得到同样的错误。我在这里做错了吗?
答案 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";
}