After Effects / ExtendScript Function.caller 等效
After Effects / ExtendScript Function.caller equivalent
由于在 After Effects 中实现的 ExtendScript 似乎不支持许多函数成员,例如 "Function.caller",是否有另一种已知方法可以让您看到调用函数的名称,适用于 AE CS5。 5以上?内置或外部库都很棒。
如果你想要 运行 函数名(被调用者),你可以这样做:
arguments.callee.name
示例:
function someFuncName() {
$.write(arguments.callee.name);
}
someFuncName();
//Result: someFuncName
在您的情况下(您需要调用函数名称),ExtendScript 没有执行此操作的内置函数,因此您需要创建一个:
function caller() {
var stack = $.stack.split('\n');
return stack.length === 4 ? null : stack[stack.length - 4].slice(0, -2);
}
现在,如果我们有一个由顶层代码调用的函数,那么我们将得到 null,否则我们将得到调用函数名称:
示例:
function someFuncName() {
$.write(caller());
}
function callerFuncName() {
someFuncName();
}
callerFuncName(); //Result: callerFuncName
someFuncName(); //Result: null
由于在 After Effects 中实现的 ExtendScript 似乎不支持许多函数成员,例如 "Function.caller",是否有另一种已知方法可以让您看到调用函数的名称,适用于 AE CS5。 5以上?内置或外部库都很棒。
如果你想要 运行 函数名(被调用者),你可以这样做:
arguments.callee.name
示例:
function someFuncName() {
$.write(arguments.callee.name);
}
someFuncName();
//Result: someFuncName
在您的情况下(您需要调用函数名称),ExtendScript 没有执行此操作的内置函数,因此您需要创建一个:
function caller() {
var stack = $.stack.split('\n');
return stack.length === 4 ? null : stack[stack.length - 4].slice(0, -2);
}
现在,如果我们有一个由顶层代码调用的函数,那么我们将得到 null,否则我们将得到调用函数名称:
示例:
function someFuncName() {
$.write(caller());
}
function callerFuncName() {
someFuncName();
}
callerFuncName(); //Result: callerFuncName
someFuncName(); //Result: null