每天學一點flash 60 Dictionary類學習筆記
阿新 • • 發佈:2018-12-04
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
[java] view plain copy print ?- package
- {
- import flash.utils.Dictionary;
- import flash.display.DisplayObject;
- import flash.events.EventDispatcher
- public
- {
- private var childrenTotal:int;//記錄佇列中的總元素數目
- private
- 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引擎裡面都曾經設計過一個容器類的設計,這種容器類有常見方法。
如 新增物件的方法
刪除物件的方法
搜尋物件的方法
返回容器當中陣列
。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。
等這些方法.
現在測試這個類,看看像不像我們所說的容器類
[java] view plain copy print ?
- 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 類其實就是一個數組,只不過這個陣列比較特別一點。至於這個應用還有很多很多,日後會繼續記錄下來。