在AS3中获取当前的类+方法名称

时间:2011-01-11 10:11:15

标签: actionscript-3 debugging

我想知道是否有一种简单的方法,我有一个片段,在调用时跟踪方法的名称。我发现className是中途的,但不是该方法的东西...我想要的是1行trace(...)所以我避免键入方法名称并让自己开放错误。 这是为了测试顺序发生的事情,当我不想在调试器中单步执行时。

2 个答案:

答案 0 :(得分:3)

如果您已使用调试信息编译swf并使用播放器的调试版本,则可以查看getStackTrace对象中的Error属性:

快速举例:

    public function getCallingInfos():Object{
        var tmp:Array=new Error().getStackTrace().split("\n");
        tmp=tmp[2].split(" ");
        tmp=tmp[1].split("/");
        return {namespaceAndClass:tmp[0], method:tmp[1]};
    }

    var infos:Object=getCallingInfos();
    trace(infos.namespaceAndClass, infos.method);

答案 1 :(得分:0)

    public static function getCurrentClassName(c:Object):String
    {
        var cString:String = c.toString();
        var cSplittedFirst:Array = cString.split('[object ');
        var cFirstString:String = String(cSplittedFirst[1]);
        var cSplittedLast:Array = cFirstString.split(']');
        var cName:String = cSplittedLast.join('');

        return cName;
    }

用于检查是否构建了某个类。

用法(这里我把代码放在主类中):

trace('[DEBUG]: '+ClassData.getCurrentClassName(this)+' constructed.');

追踪返回:

[DEBUG]: Main constructed.