所以我刚刚查看了几周后我写的一些ExtendScript代码来完成我正在处理的After Effects脚本。
我尝试编译,现在我在代码中的各个点获得了“未定义不是对象”错误。
我现在不会发布完整的脚本。不要以为这有助于这种情况。究竟为什么这些错误一直在发生?我编写脚本时没有它们,现在我打开它,它们就在那里。我真的不明白。
无论如何,我们来看看,例如这部分代码:
var projectCompNames = new Array ();
var projectCompObjects = new Array ();
var scriptPath = ((new File($.fileName)).parent).toString();
var i;
// get a list of all compositions in the project and write them into an array
for (i = 1; i <= app.project.numItems; i++) {
if (app.project.item(i) instanceof CompItem) {
projectCompNames.push(app.project.item(i).name);
projectCompObjects.push(app.project.item(i));
}
}
正如评论所暗示的那样,这将获得项目中的所有组合并将它们写入数组中。我在编写脚本时工作得很好,现在却没有。
这部分:
app.project.numItems
显然会产生错误'Undefined is not object'。因为如果我将代码更改为:
for (i = 1; i <= 5; i++) {
if (app.project.item(i) instanceof CompItem) {
projectCompNames.push(app.project.item(i).name);
projectCompObjects.push(app.project.item(i));
}
}
错误消失了。在第一行。第二行中的错误相同。然后我可以通过使用if条件的一些随机整数来修复它,并且错误继续存在。在我的代码的任何行。到处都是。我在这里非常绝望。不知道这是从哪里来的。编译器有问题吗?我应该重新安装ExtendScript Toolkit吗?我的意思是,这真的很奇怪。
如果有人知道为什么会这样,我会非常感谢你的帮助。如果我不明白这一点,我将不得不重新开始使用该脚本。我不可能在我的代码中的50个不同位置调试该错误,特别是因为它是如此随机。
编辑因为我单独启动了ExtendScript编辑器而不是AE,所以我必须自己将编辑器链接到AE。我只是没那样做。如果您从AE UI启动它,它会自动执行此操作。
This正是我所说的。这是编译器吓坏了的唯一原因。非所有After Effects特定变量和函数未加载时非常明显。