flash特效原理:链式模型的使用(2)
? ? ? 接下来,我们会构建一个简单类,作为这种模型的一个基础构成。我们定义这个为LinkNode 类 ? ? ?? package { //节点 public class LinkNode { public var data:Object; public var next:Object; public function LinkNode() { } } } 这个类,只是有两个属性,第一个属性是记录对象,第二个数据是记录下一个节点。(这次我们只用单向的链表,后面的变化会很多种情况) 第二个类为LinkList 类,这个类只有三个方法,一个是插入的操作,一个获取节点的操作,一个是获取节点数组的方法。这种结构可以写的很复杂,但是鉴于实验,我更加希望可以简单易懂。 package { public class LinkList { private var list:Array = []; private var firstNode:LinkNode; private var tempNode:LinkNode; public function LinkList() { } //插入操作 public function insert(node:*):void { if (firstNode==null) { firstNode=new LinkNode(); firstNode.data = node; firstNode.next = null; list.push(firstNode); tempNode = firstNode; } else { var newNode:LinkNode=new LinkNode(); newNode.data = node; newNode.next = tempNode; list.push(newNode); tempNode = newNode; firstNode.next = tempNode; } } //获取某一个节点 public function getNode(node:*):LinkNode { var len:int = list.length; for (var i:int=0; i<len; i++) { if (list[i].data == node) { return list[i]; } } return null; } public function get source():Array { return list; } } } ? ? 插入方法是参考这个图的思路来做,有了这个方法之后,我们可以对数据进行插入,它的创建思路很简单,当第一个点A为空的时候,创建并插入到数值里面,当第二个点的时候,它的指向就指向于A点,但是A的指向于指向到B,同理,当创建到C点的时候,C指向到B,而A需要重新指向以保证它形成一个回路. 第一步: ?A--->null, 第二步:B----->A ? [ ?A--->B] 第三步:C----->B---->A,[A---->C] 第四步:D---->C--->B---->A,?[A---->D] 通过使用这个模型,我们就可以来点有意思的程序了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |