2016-04-05 2 views
1

Étant donné que ExtendScript, tel qu'il est implémenté dans After Effects, ne semble pas prendre en charge de nombreux membres Fonction tels que "Function.caller", existe-t-il un autre moyen permettant de voir le nom de la fonction appelante, cela fonctionne pour AE CS5.5 vers le haut? Les librairies intégrées ou externes seraient géniales.After Effects/ExtendScript Function.caller équivalent

Répondre

0

Si vous voulez que le nom de la fonction de roulement (callee), vous pouvez le faire avec:

arguments.callee.name 

Exemple:

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

Dans votre cas (où vous avez besoin du nom de la fonction de l'appelant), ExtendScript n'a pas intégré la fonction qu'il fait, vous devez en créer un:

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

maintenant, si nous avons une fonction celle invoquée par le code de haut niveau, nous allons donc obtenir nulle, sinon on obtient le nom de la fonction de l'appelant:

Exemple:

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