星期四, 2月 04, 2010

AS3 的 Dictionary Class

一開始還有點搞不懂Dictionary到底是什麼
後來發現她就跟Object一樣是hash表

不過有點不一樣的是,Dictionary可以用Object當作Key..
實在太神奇了XD


關聯數組有時候也稱為「哈希」或「映射」,它使用「鍵」而非數字索引來組織存儲的值。關聯數組中的每個鍵都是用於訪問一個存儲值的唯一字符串。關聯數組為 Object 類的實例,也就是說每個鍵都與一個屬性名稱對應。關聯數組是鍵和值對的無序集合。在代碼中,不應期望關聯數組的鍵按特定的順序排列。
ActionScript 3.0 中引入了名為「Dictionary」的高級關聯數組。字典是 flash.utils 包中 Dictionary 類的實例,使用的鍵可以為任意數據類型,但通常為 Object 類的實例。換言之,字典的鍵不侷限於 String 類型的值。
as3,Dictionary,關聯數組


節錄Kimo Chung's AS3 Playground - 秘技: 用Sprtie & Dictionary 熷加自定的variables 而不改變Sprite 的結構的例子


使用Dictionary 和Array 有何分別呢?
Array 使用object.toString() 作為index, 因此若果有兩個Sprite 的名稱相同, 會使用同一格


var myPictureIndexDict = new Dictionary;
var myPictureIndexArray = new Array;

var a = new Sprite;
a.name = "myName";
myPictureIndexDict[a] = 1;
myPictureIndexArray[a] = 1;

var b = new Sprite;
b.name = "myName";
myPictureIndexDict[b] = 2;
myPictureIndexArray[b] = 2;

trace(myPictureIndexDict[a]); //output: 1
trace(myPictureIndexArray[a]); //output: 2


延伸閱讀
Ticore's Blog - AS3 Dictionary 居然無法用 QName 當 Key

沒有留言:

張貼留言