arguments.caller
În Actionscript 3, proprietatea arguments.caller, cu care ne obișnuise Actionscript 2, a dispărut ca prin minune. În concluzie, dacă vrei să afli ce funcție ți-a apelat funcția în care scrii o anumită bucată de cod, trebuie să trimiți ca parametru și funcția apelantă. Din păcate, dacă extinzi o clasă și vrei să definești o funcție override, ești obligat să păstrezi antetul funcției identic cu antetul funcției din superclasă. În concluzie, n-ai cum să adaugi un alt parametru la cei deja existenți.
Ca să rezolvi problema, singura modalitate viabilă pare să fie să-ti arunci singur o eroare aleatoare, pe care să o interceptezi. Apoi poți să faci stackTrace ca să afli toate funcțiile care rulează în momentul respectiv. Dacă ai nevoie de ceva care să-ți mimeze doar arguments.caller, poți folosi o bucată de cod ca cea de mai jos:
1
2
3
4
5
6 try { throw new Error() }
catch (e:Error) {
var stackTrace:String = e.getStackTrace();
var caller:String = String(stackTrace.split('\n')[2]).substring(String(stackTrace.split('\n')[2]).lastIndexOf(':')+1);
}
trace(caller);
Rezultatul trace-ului va include și parantezele, pe lângă numele funcției, asemănător cu următorul exemplu:
1 | execQueuedCmds() |

