kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks


关联数组

关联数组有时候也称为"哈希"或"映射",由键和键值组成。
关联数组是键和值对的无序集合。

在as3中引入了名为"字典"的高级关联数组。
字典是 flash.utils 包中 Dictionary 类的实例,使用的键可以为任意数据类型,
但通常为 Object 类的实例。即字典的键不局限于 String 类型的值。

故关联数组的键名分类有以下2种。

1.键名为字符串
   在 as3中有两种创建关联数组的方法。
  
  a.使用 Object 构造函数
     Object 类的实例(也称作"通用对象")在功能上等同于关联数组。
     通用对象的每个属性名称都用作键,提供对存储的值的访问。
     如:
     var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
     trace(monitorInfo["type"], monitorInfo["resolution"]);
     // 输出:Flat Panel 1600 x 1200


     如在声明数组时不需要初始化,则以[] or . 添加值。
     如:
      var monitorInfo:Object = new Object();
      monitorInfo["aspect ratio"] = "16:10";
      monitorInfo.colors = "16.7 million";
      trace(monitorInfo["aspect ratio"], monitorInfo.colors);
      // 输出:16:10 16.7 million

  b.用 Array 构造函数,如果将关联数组声明为 Array 类型,则将无法使用对象文本初始化该数组。

    var monitorInfo:Array = new Array();
    monitorInfo["type"] = "Flat Panel";
    monitorInfo["resolution"] = "1600 x 1200";
    trace(monitorInfo["type"], monitorInfo["resolution"]);
    // 输出: Flat Panel 1600 x 1200

    用 Array 构造函数创建关联数组没有什么优势。即使使用 Array 构造函数或 Array 数据类型,
    也不能将 Array 类的 Array.length 属性或任何方法用于关联数组。
    最好将 Array 构造函数用于创建索引数组。

    即不赞成用array做字典以及哈希组织数据。

2.键名为对象
用 Dictionary 类创建使用对象而非字符串作为键的关联数组。

如,考虑这样一个应用程序,它可根据 Sprite 对象与特定容器的关联确定 Sprite 对象的位置。
可以使用 Dictionary 对象,将每个 Sprite 对象映射到一个容器。

如下例子:

import flash.display.Sprite;
import flash.utils.Dictionary;

var groupMap:Dictionary = new Dictionary();

// 作为键名的对象
var spr1:Sprite = new Sprite();
var spr2:Sprite = new Sprite();
var spr3:Sprite = new Sprite();

// 用作值的对象
var groupA:Object = new Object();
var groupB:Object = new Object();

// 在字典中创建新的键-值对。
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");
}

posted on 2008-06-04 11:04 kenlistian 阅读(1877) 评论(0)  编辑 收藏 引用 所属分类: Flash
只有注册用户登录后才能发表评论。