As3游戏数据结构(类包简介)

[quote]
描述:
'As3游戏数据结构’是一个包含了许多常见的用于Flash游戏的编程和应用开发的数据结构包。我做该项目的起因是因为我想要一个统一库来用于我的游戏。

Collections
几乎所有的类都实现了Collection 接口,它定义了以下几种方法:
contains(obj:*), 检测元素是否存在.clear(), 清空所有的元素.
getIterator(), 获得一个包含所有元素的Iterator对象
toArray(), 获得一个包含所有元素的Array对象

使用 Iterators
每一个实现了Collection 接口的类都能通过getIterator()方法来获得一个iterator 对象,一但你有一个iterator对象,你就能通过以下等例子来存取数据。

var myItr:Iterator = getIterator();
var value:*;

//read all values
while (myItr.hasNext())
{
value = myItr.next();
}

//write new value
myItr.start();
while (myItr.hasNext())
{
myItr.data = "newValue";
next();
}

//the same with a for loop
for (myItr.start(); myItr.hasNext(); myItr.next())
{
value = myItr.data;
}

请记住,iterator是基本一个迭代器,一些类还提供更复杂的处理,比如链表或树。这是必要的,因为你可以用在更多的迭代方向(来回,背部,上,下.. ) 。(ps。游戏中的人物控制)。你获得那些iterator不成功或者调用一个特殊的方法。(这句不懂怎么翻译)

var listItr:ListIterator = myLinkedList.getIterator() as ListIterator;
var listItr:ListIterator = myLinkedList.getListIterator();

数据结构:(这里没有翻译,但是给出了各个类的大概意思,资料来源于网络)

多维数组

该库包含一个二维数组和三维数组类,他们都是执行单一线性阵列,而不是嵌套的数组。这是最快的方法在Flash模拟多维数组和优于嵌套数组方法,因为多个阵列查找是比较慢的一个查找加上一个简单的算术表达式(这你也可以经常precompute在外环).该类最常用于2d或者3d地图。

队列

队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
(1)允许删除的一端称为队头(Front)。   (2)允许插入的一端称为队尾(Rear)。   (3)当队列中没有元素时称为空队列。   (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许"加塞"),每次离开的成员总是队列头上的(不允许中途离队),即当前"最老的"成员离队。



栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。   (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。   (2)当表中没有元素时称为空栈。   (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。



树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。  树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。

二叉树

二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。

二叉排序树和哈希表
二叉排序树和哈希表用于查找元素,其内部结构不同,通过不同的实现使其查找应用不相同。

单链表
 链接方式存储的线性表简称为链表(Linked List)。  链表的具体存储表示为:   ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)   ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意:   链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
链表的结点结构 ┌──┬──┐ │data│next│ └──┴──┘  data域--存放结点值的数据域  next域--存放结点的直接后继的地址(位置)的指针域(链域) 注意:   ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。  ②每个结点只有一个链域的链表称为单链表(Single Linked List)。

堆和堆队列

堆:堆是一个特殊的二叉树,它的每一个节点都比子节点大。

堆队列:一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象。



图(Graph)是一种复杂的非线性结构。

位向量

位向量是按位存储的向量.


[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值