2009-07-28 15 views

答えて

6

これは一定ではなく、このコード行はあなたに行番号与える:

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

PS:SWFがOXMO456のトリックを使用するには、デバッグモードで

+0

うわー、それはクール – jedierikb

+0

非常に素晴らしいトリックです! – HanClinto

+0

皆さんありがとうございます! – OXMO456

2

をコンパイルされている場合にのみ動作しますが関数として、インデックス0ではなくmatch結果のインデックス1を使用してください。以下のコードは、これとデバッグ機能のためのチェックを行います。

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

例:

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