0

我有一个函数(FunctionA)被另一个函数(FunctionB)调用。问题是,我不确定“FunctionB”是哪个函数。

我有这段代码:

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

我需要弄清楚“???”的内容 所以 FunctionA 的跟踪语句如下所示:

此函数由 FunctionB 调用

我应该为“???”写什么?

4

2 回答 2

1

想到的一个想法是查看当前的堆栈跟踪。当前执行方法之前的入口应该是调用 FunctionA 的例程。

例子

(这适用于 ActionScript 3.0,但我很确定它应该在以前的版本中可用)

于 2009-07-29T21:37:04.907 回答
0

我不认为堆栈跟踪在 AS2 中可用。

对于每个可能的呼叫站点,添加行

arguments.callee.__caller="somestr";

somestr 是独一无二的。

在功能 A

trace(arguments.caller.__caller);

回应评论:

我想从理论上讲,您可以递归地遍历 _global 对象以查找函数并标记它们。

我假设您没有使用 Flash IDE?这有一个调试器(相当慢而且很糟糕),但它应该给你一个堆栈跟踪(如果我没记错的话)

于 2009-07-29T21:46:31.093 回答