`
ycy303
  • 浏览: 190963 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

MyTrace组件

阅读更多

在flash开发的时候,我们常常希望能够把trace信息显示在舞台上,以便于调试。特别是做网络游戏或网络应用时,经常有这样的需求。

如下是我用as3写的MyTrace类。为了尽量保持轻量级,文本显示我用的是TextField。为了便于使用,可视内容都是用代码搞定的。

功能:

  • 添加trace信息,参数跟使用trace一样;
  • 清除所以信息;
  • 行号;
  • 总是保持在最上层;
  • 文本内容总是滚动到最下面;
  • 重设文本框大小;

打算添加的功能:

  • 鼠标拖动调整文本框大小;
  • 保存trace信息为文本文件;
MyTrace类
package 
{
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.display.DisplayObject;
    import flash.display.Graphics;
    import flash.display.Shape;
	import flash.events.MouseEvent;

	//import fl.controls.TextArea;	
	//import mx.controls.TextArea;
	/**
	* ...
	* @author ycy  09,19,2008
	*/
	public class MyTrace extends Sprite 
	{
		private var num:uint;
		private var child:Sprite = new Sprite();
		private var size:Number = 10;
		private var bgColor:uint      = 0xFFCC00;
        private var borderColor:uint  = 0x666666;
        private var borderSize:uint   = 0;

		private var traceTxt:TextField = new TextField();
		
		public function MyTrace(w:Number = 100,h:Number=200 ) {
			
			traceTxt.width = w;
			traceTxt.height = h;
			traceTxt.y = size;
			traceTxt.border = true;
			traceTxt.background = true;
			drawCircle();
			
			addChild(traceTxt);					
		}
		public function add(...args):void {  
			num++;
            var str:String = num+":";  
            for (var i = 0; i < args.length; i++) {  
                str += args[i];  
            }  
            str += "\n";  
            traceTxt.appendText(str);  
			
			scrollText();
			getToTop();
        } 
		public function clear():void {
			traceTxt.text = "";
		}
		public function reSize(w:Number, h:Number):void {
			traceTxt.width = w;
			traceTxt.height = h;
		}
		private function getToTop():void {
			var o:DisplayObjectContainer = this.root as DisplayObjectContainer;
			if (o.numChildren - 1 > o.getChildIndex(this)) {
				o.setChildIndex(this, o.numChildren - 1);
			}
		}
		
		private function drawCircle():void {
            
            var halfSize:uint = Math.round(size / 2);
            child.graphics.beginFill(bgColor);
            child.graphics.lineStyle(borderSize, borderColor);
            child.graphics.drawCircle(halfSize, halfSize, halfSize);
            child.graphics.endFill();
            addChild(child);
			
			child.addEventListener(MouseEvent.CLICK, clickHandle);
			child.buttonMode = true;
			child.useHandCursor = true;
        }
		
		private function clickHandle(e:Event):void {
			add("click");
			traceTxt.visible = !(traceTxt.visible);
		}
		
		private function scrollText():void {
			traceTxt.scrollV = traceTxt.maxScrollV;
		}
	}
	
}
 使用方法:
var myTrace:MyTrace=new MyTrace();
addChild(myTrace);
for(var i=0;i<20;i++){	
   myTrace.add("  just ","a test");
}
 

 

 

分享到:
评论

相关推荐

    mytrace 路由算法

    mytrace linux traceroute

    调试过程中数据信息的输出和存盘

    void mytrace(CString,int); void mytrace(CString,long); void mytrace(CString,double); void mytrace(CString,int,CString,double); void mytrace(CString,int,CString,int,CString,double); void mytrace...

    mstrace内存泄露检测工具

    rpm -ivh glibc-utils-2.9-2.i386 ...[root@zzt]$export MALLOC_TRACE=mytrace.log [root@zzt]$ gcc testmtrace.c -o testmtrace [root@zzt]$./testmtrace [root@zzt]$ mtrace testmtrace mytrace.log

    AbsoluteDoubleTrace:用于阻止浏览器指纹识别的Web扩展

    将MyTrace文件夹移动到您选择的位置,例如Documents文件夹 当您将来要更新跟踪时,请用新文件夹替换该MyTrace文件夹。 如果移动此文件夹,扩展名设置将被重置,因此请确保在创建备份之前进行备

    豪华首页调用Flash自动变换效果(附源代码)

    myTrace(\"Loaded xml, and processing it into an array...\"); for (x = 0; x ; x++) { arrayLink.push(_loc1.pathPrefix + navDoc.firstChild.childNodes[x].attributes.LOCATION); arrayPercent.push...

    trajectory-prediction

    轨迹预测 ...| |-- mytrace.py | `-- v3TP.py |-- __main__.py |-- pywrenRunner.py |-- README.md |-- test-dataclay.py |-- test-file.py |-- python | `-- v3 | |-- data2 | | |-- 0.txt | | ... | |--

Global site tag (gtag.js) - Google Analytics