Как определить, какая функция вызвала другую функцию в ActionScript 2? - PullRequest
0 голосов
/ 30 июля 2009

У меня есть функция (FunctionA), которая вызывается другой функцией (FunctionB). Проблема в том, что я не уверен, какая функция "FunctionB".

У меня есть этот фрагмент кода:

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

Мне нужно выяснить, что поставить для "???" поэтому оператор трассировки FunctionA выглядит так:

This function was called by FunctionB

Что я должен поставить для "???"?

Ответы [ 2 ]

1 голос
/ 30 июля 2009

Идея, которая приходит в голову, заключается в рассмотрении текущей трассировки стека. Запись перед текущим выполняемым методом должна быть подпрограммой, вызвавшей FunctionA.

* ** 1003 тысяча два * Пример

(Это для ActionScript 3.0, но я уверен, что он должен быть доступен в предыдущих версиях)

0 голосов
/ 30 июля 2009

Я не думаю, что трассировка стека доступна в AS2.

Для каждого возможного вызова сайта добавьте строку

arguments.callee.__caller="somestr";

где Somestr является уникальным.

В функции A

trace(arguments.caller.__caller);

В ответ на комментарий:

Полагаю, теоретически вы могли бы рекурсивно обходить объект _global в поисках функций и пометить их.

Я предполагаю, что вы не используете Flash IDE? Это отладчик (довольно медленный и плохой), но он должен дать вам трассировку стека (если память мне не изменяет)

...