您的位置:首页 > 其它

每天学一点flash(60) Dictionary类学习笔记

2009-10-19 23:55 453 查看
package
{ 
	import flash.utils.Dictionary;
	import flash.display.DisplayObject;
	import flash.events.EventDispatcher
	public class Queue extends EventDispatcher
	{	
	    private var  childrenTotal:int;//记录队列中的总元素数目
		private var  data:Dictionary;//记录队列元素的动态数组
		public function Queue()
		{
			data=new Dictionary(true);//存储队列中的元素
			childrenTotal=0;//初始化默认队列数目为0
		}
		//添加队列元素
		public function addItem(child:DisplayObject):DisplayObject
		{  
		    var name:String=child.name;//创建一个临时名字
			data[name]=child;//用动态数组记录键和值
			childrenTotal++; //递增元素	
			return child;
		}
		
		//删除队列中某一个元素
		public function removeItem(child:DisplayObject):DisplayObject
		{
			//通过键来搜索是否匹配 是就删除
			delete data[child.name];
			childrenTotal--;//删除了自然就减少
			return child;
		}
		
		//返回队列中的元素
		public function get numChildren():int
		{
			return childrenTotal;	
		}
		
		//通过名字搜索元素
		public function  getChildByName(name:String):DisplayObject
		{
			return data[name];
		}
	    
		//返回队列中所在位置
	    public function getChildIndex(child:DisplayObject):int
		{
			var index:int=0;
			for each( var o:DisplayObject in data)
			{
				index++;
				if(o==data[child.name])
				{
					break;		
				}
			}
			return  index;
		}
	}
	
}


Dictionary 类真的是一个很好的类,如果细心发现到,这个类是可以经常帮助你处理一些数组做不到的事情,数组里面下标是数字,

但是Dictionary类 下标可以是字符串,这样有利于我们构建键和值对应关系。这是很多帮助。在sandy三维引擎或者pvp3d引擎里面都曾经设计过一个容器类的设计,这种容器类有常见方法。

如 添加对象的方法

删除对象的方法

搜索对象的方法

返回容器当中数组

。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。

等这些方法.

现在测试这个类,看看像不像我们所说的容器类

package 
{
    import flash.display.MovieClip;
	import flash.events.*;
	public class main extends MovieClip
	{
		private var myqueue:Queue;
		private var mybox1:box=new box();
		private var mybox2:box=new box();
		private var mybox3:box=new box();
		public function main()
		{
			
			myqueue=new Queue();
			trace(myqueue.addItem(mybox1));
			trace(myqueue.addItem(mybox2));
			trace(myqueue.addItem(mybox3));
			
			trace(myqueue.numChildren);//测试返回的参数
			trace(myqueue.getChildIndex(mybox1));
			
		}
	}
}


注意:private var mybox1:box=new box(); box类是我们一个MovieClip的子类。是我们通过库链接来的

输出结果:

[object box]
[object box]
[object box]
3
2

可以看到我们一个像容器类的基本功能已经有了,但是相比As3 的容器类,涉及的东西还是很多的。而这里,只是感慨Dictionary 类功能需要发掘才去实现到。

总一句:Dictionary 类其实就是一个数组,只不过这个数组比较特别一点。至于这个应用还有很多很多,日后会继续记录下来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: