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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值