2009-07-29 7 views
0

Ich habe eine Funktion (FunctionA), die von einer anderen Funktion (FunctionB) aufgerufen wird. Das Problem ist, ich bin mir nicht sicher, welche Funktion "FunctionB" ist.Wie kann ich feststellen, welche Funktion in ActionScript 2 eine andere Funktion aufgerufen hat?

Ich habe diesen Code-Snippet:

function FunctionA():void { 
    trace("This function was called by " + ???); 
} 

ich brauche, herauszufinden, was zu setzen "???" So sieht die Trace-Anweisung von FunctionA wie folgt aus:

This function was called by FunctionB

Was soll ich für "???" eingeben?

Antwort

1

Eine Idee, die in den Sinn kommt, ist die aktuelle Stapelverfolgung zu betrachten. Der Eintrag vor der aktuell ausgeführten Methode sollte die Routine sein, die in FunctionA aufgerufen wurde.

Example

(Dies ist für Actionscript 3.0, aber ich bin mir ziemlich sicher, dass es sollte in früheren Versionen verfügbar)

+0

Es wirft den Fehler: "Es gibt keine Methode mit dem Namen 'getStackTrace'." Ich denke, es ist nur AS3. –

0

Ich glaube nicht, Stack-Trace in AS2 zur Verfügung steht.

Für jeden Standort möglich Anruf, fügen Sie die Zeile

arguments.callee.__caller="somestr"; 

wo somestr einzigartig ist.

In Funktion A

trace(arguments.caller.__caller); 

Als Antwort auf Kommentar:

ich theoretisch erraten, können Sie das _global Objekt rekursiv suchen Funktionen gehen konnte und Tagging ihnen.

Ich nehme an, dass Sie nicht die Flash IDE verwenden? Dies hat einen Debugger (ziemlich langsam und schlecht), aber es sollte Ihnen einen Stack-Trace geben (wenn Speicher mir richtig dient)

+0

Das einzige Problem bei dieser Technik ist, dass ich diese Software bekommen habe, und ich bin mir nicht einmal sicher, was es überhaupt heißen könnte. Gibt es eine Möglichkeit, in den Root-Film einzubinden, um herauszufinden, wann eine Funktion aufgerufen wird? –

Verwandte Themen