2009-07-28 13 views

Respuesta

6

Ésta no es una constante, pero esta línea de código le dará el número de línea:

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

PD: esto sólo funcionará si el swf se compila en modo de depuración

+0

wow, eso es genial – jedierikb

+0

Muy buen truco! – HanClinto

+0

¡Gracias chicos! – OXMO456

2

Para utilizar el truco de OXMO456 como función, solo use el índice 1 del resultado match (en lugar del índice 0). El código siguiente hace esto y controles para la capacidad de depuración:

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; 
} 

Ejemplo:

trace('line ' + lineNumber() + ' reached!'); 
Cuestiones relacionadas