2016-04-05 6 views
1

Da ExtendScript, wie es in After Effects implementiert wurde, scheinbar nicht viele Funktionsmember wie "Function.caller" unterstützt, gibt es noch eine andere Möglichkeit, den Namen der aufrufenden Funktion anzuzeigen. das funktioniert für AE CS5.5 aufwärts? Sowohl eingebaute als auch externe Bibliotheken wären großartig.After Effects/ExtendScript Function.caller entspricht

Antwort

0

Wenn Sie die Lauffunktionsnamen (Rufenen) möchten, können Sie es tun mit:

arguments.callee.name 

Beispiel:

function someFuncName() { 
    $.write(arguments.callee.name); 
} 
someFuncName(); 
//Result: someFuncName 

In Ihrem Fall (wo Sie den Anrufer Funktionsnamen müssen), ExtendScript hat nicht funktions eingebaut, die es tut, so müssen Sie einen erstellen:

function caller() { 
    var stack = $.stack.split('\n'); 
    return stack.length === 4 ? null : stack[stack.length - 4].slice(0, -2); 
} 

wenn wir nun eine Funktion haben, dass durch den Top-Level-Code aufgerufen wird, so werden wir null erhalten, andernfalls werden wir die Anrufer Funktionsnamen erhalten:

Beispiel:

function someFuncName() { 
    $.write(caller()); 
} 
function callerFuncName() { 
    someFuncName(); 
} 
callerFuncName(); //Result: callerFuncName 
someFuncName(); //Result: null