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

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 类其实就是一个数组,只不过这个数组比较特别一点。至于这个应用还有很多很多,日后会继续记录下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值