Dan*_*son 4 debugging logging actionscript-3
我有了扩展trace()消息的想法.
为什么
trace()遍及我的代码,我想通过一个简单的命令打开/关闭它们,并且可能为trace()添加某种优先级功能,即
myTrace.TraceMsg("loosehere",debugme, 0);
myTrace.TraceMsg("winhere",debugme, 1);
Run Code Online (Sandbox Code Playgroud)
当我跑步时,只有优先级较高的那个,在这种情况下为"1".
我还想添加更多功能,比如将消息记录到文件等等.
问题
trace()如何工作? - 有可能以某种方式超载trace()吗? - 我如何实现自定义TraceMsg(这里有什么代码?)方法?
有一些严重的问题在我们最喜欢的搜索引擎上找到关于这个主题的信息,所以任何帮助将不胜感激.
我想出了一种在Flash专用项目中使用我自己的trace()函数的一种相当有效但又乏味的方法,但是只需要调用它
trace("this", "that", "and that too");
Run Code Online (Sandbox Code Playgroud)
我基本上在我的项目的每个类中实现一个trace()方法,它调用一个公共函数(这样我就可以从那里调用真正的trace()函数.
这就是我所做的:在每个班级我称之为
include "trace_implementation.as";
Run Code Online (Sandbox Code Playgroud)
在.as文件中有一个简单的方法实现(它也可以是一个静态方法).
public function trace(... arguments){
for(var i in arguments){
myTrace(arguments[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
myTrace函数在其自己的myTrace.as文件中定义
package pt.utils{
import flash.external.ExternalInterface
public function myTrace(_s:String):void{
trace(_s);// this will call the original flash trace() function
ExternalInterface.call("console.log", _s);// to get traces outside of flash IDE
/*implement what you want here*/
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在当我用"省略跟踪动作"编译时,我的整个调试被忽略,好像我只是简单地使用了trace().
这里真正好的部分是你可以根据你在跟踪中给出的指令实现自定义操作,所以:
trace(Debug.DEBUG_MESSAGE, "message to output in debug");
trace(Profile.START_PROFILING, this, 'name');
/*do heavy code*/
trace(Profile.STOP_PROFILING, this);
Run Code Online (Sandbox Code Playgroud)
然后从myTrace或Tracer类或任何东西发送它:)
希望这有助于未来的追踪者.