2009-07-28 17 views

risposta

6

Questa non è una costante, ma questa riga di codice vi darà il numero della linea:

trace(">",new Error().getStackTrace().match(/(?<=:)[0-9]*(?=])/g)[0]); 

PS: questo funziona solo se il file SWF viene compilato in modalità debug

+0

wow, questo è cool – jedierikb

+0

Molto bello trucco! – HanClinto

+0

Grazie ragazzi !!! – OXMO456

2

Per utilizzare il trucco di OXMO456 come una funzione, basta usare l'indice 1 del risultato match (anziché l'indice 0). Il codice qui sotto fa questo e controlli per la capacità di debug:

import flash.system.Capabilities; 

/** 
* Returns the positive line number from which the function is called, if 
* available, otherwise returns a negative number. 
*/ 
function lineNumber():int { 
    var ret:int = -1; 
    if (Capabilities.isDebugger) { 
    ret = new Error().getStackTrace().match(/(?<=:)[0-9]*(?=])/g)[1]; 
    } 
    return ret; 
} 

Esempio:

trace('line ' + lineNumber() + ' reached!'); 
Problemi correlati