За съжаление отговорът е не (вижте редакцията по-долу). Функциите получиха специално свойство, наречено arguments
, а в AS2 имаше свойство caller
, което би направило приблизително това, което искате. Въпреки че обектът arguments все още е наличен в AS3, свойството caller беше премахнато от AS3 (и следователно от Flex 3), така че няма пряк начин да правите това, което искате. Също така се препоръчва да използвате параметъра [...rest](http://livedocs.adobe.com/flex/3/langref/statements.html#..._(rest)_параметър) езикова функция вместо аргументи.
Ето референция по въпроса (потърсете callee, за да намерите съответните подробности).
Редактиране: По-нататъшно разследване показа, че е възможно да получите проследяване на стека за текущата изпълняваща се функция, така че ако имате късмет, можете да направите нещо с това. Вижте този запис в блог и тази публикация във форума за повече подробности.
Основната идея от публикацията в блога е да издадете грешка и след това да я хванете незабавно и след това да анализирате проследяването на стека. Грозно, но може и да ти свърши работа.
код от публикацията в блога:
var stackTrace:String;
try { throw new Error(); }
catch (e:Error) { stackTrace = e.getStackTrace(); }
var lines:Array = stackTrace.split("\n");
var isDebug:Boolean = (lines[1] as String).indexOf('[') != -1;
var path:String;
var line:int = -1;
if(isDebug)
{
var regex:RegExp = /at\x20(.+?)\[(.+?)\]/i;
var matches:Array = regex.exec(lines[2]);
path = matches[1];
//file:line = matches[2]
//windows == 2 because of drive:\
line = matches[2].split(':')[2];
}
else
{
path = (lines[2] as String).substring(4);
}
trace(path + (line != -1 ? '[' + line.toString() + ']' : ''));
person
James Fassett
schedule
11.10.2008