AS3的索引数组和关联数组

来源:互联网 发布:软件产品质量模型 编辑:程序博客网 时间:2024/05/22 19:17

AS3中有两种数组,一种是索引数组,另一种是关联数组。两者根据不同情况,使用会非常方便。


Array(索引数组):

        索引值是整数。第一个元素为Array.[0],第二个元素为Array.[1]。可以在索引数组中存储数字、字符串、对象等各种类型,甚至是数组对象(多维数组)。注意,Array类允许创建关联数组,但是Array类中的方法无法适用于关联数组。

        示例代码:

var oneArray:Array = new Array("a", "b", "c");var twoArray:Array = oneArray; // Both array variables refer to the same array.twoArray[0] = "z";             trace(oneArray);               // Output: z,b,c.


Object(字符串关联数组):

        索引值是字符串。关联数组是和值对应的无序集合。在AS3中有两种创建关联数组的类:Object和Dictionary。

        示例代码:

var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"}; trace(monitorInfo["type"], monitorInfo["resolution"]);  // output: Flat Panel 1600 x 1200


Dictionary(对象关联数组):
        索引值是对象。

        示例代码:

var groupMap:Dictionary = new Dictionary();  // objects to use as keys var spr1:Sprite = new Sprite(); var spr2:Sprite = new Sprite(); var spr3:Sprite = new Sprite();  // objects to use as values var groupA:Object = new Object(); var groupB:Object = new Object();  // Create new key-value pairs in dictionary. groupMap[spr1] = groupA; groupMap[spr2] = groupB; groupMap[spr3] = groupB;  if (groupMap[spr1] == groupA) {     trace("spr1 is in groupA");  } if (groupMap[spr2] == groupB) {     trace("spr2 is in groupB");  } if (groupMap[spr3] == groupB) {     trace("spr3 is in groupB");  }

使用键值遍历关联数组:

for (var key:Object in groupMap) {     trace(key, groupMap[key]); } /* output: [object Sprite] [object Object] [object Sprite] [object Object] [object Sprite] [object Object] */