Archive

Archive for August, 2008

Încă una cu developeri

August 31st, 2008

Morala este: s-ar putea să fie mai dubioşi, dar şi ei sunt oameni
via Fx{r}

evilpenguin programare

Hug a developer today

August 28th, 2008

arguments.caller

August 7th, 2008

Î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()

evilpenguin Uncategorized ,