ActionScript实现TreeView数据结构
来源:互联网 发布:科勒橱柜怎么样 知乎 编辑:程序博客网 时间:2024/05/21 05:59
由于ActionScript语言的动态特性,flex中所有树形结构数据都是直接使用xml进行处理的,虽然非常灵活,但是在使用时也会感到不方便,因此不妨实现一个Treeview的数据结构,并以此数据结构作为mxml中的数据源,使用起来就会方便很多了。
TreeNode的代码:
package com.sample.Control{import mx.collections.ArrayCollection;[Bindable]public dynamic class TreeNode{public var text:String="";public var value:String="";public var url:String="";public var Target:String="";public var ShowCheckBox:Boolean=false;public var Checked:Boolean=false;public var Depth:int=0;public var Expanded:Boolean=false;public var ImageTooltip:String="";public var ImageUrl:String="";public var Selected:Boolean=false;public var Tooltip:String="";public var Children:ArrayCollection=null;public function TreeNode(xml:XML){if(xml==null)return;this.text = xml.TEXT||xml.@TEXT||xml.@text||xml.text;this.value = xml.VALUE||xml.@VALUE||xml.@value||xml.value;this.url = xml.URL||xml.@URL||xml.@url||xml.url;this.Target = xml.TARGET||xml.@TARGET||xml.@Target||xml.Target;var showCheckBox:String = xml.SHOWCHECKBOX||xml.@SHOWCHECKBOX||xml.@ShowCheckBox||xml.ShowCheckBox;this.ShowCheckBox = showCheckBox=="true";var checked:String = xml.CHECKED||xml.@CHECKED||xml.@Checked||xml.Checked;this.Checked = checked=="true";var expand:String = xml.EXPANDED||xml.@EXPANDED||xml.@Expanded||xml.Expanded;this.Expanded = expand=="true";if(xml.DEPTH!=undefined){this.Depth = xml.DEPTH;}this.ImageTooltip = xml.IMAGETOOLTIP||xml.@IMAGETOOLTIP||xml.@ImageTooltip||xml.ImageTooltip;this.ImageUrl = xml.IMAGEURL||xml.@IMAGEURL||xml.@ImageUrl||xml.ImageUrl;if(xml.SELECTED!=undefined){this.Selected = xml.SELECTED=="true";}if(xml.TOOLTIP!=undefined){this.Tooltip = xml.TOOLTIP;}if(xml.CHILDNODES!=undefined && xml.CHILDNODES.length()>0){var cNodes:ArrayCollection = new ArrayCollection();for(var index:int=0;indexTreeView的代码:length();index++){var xNode:XML = xml.CHILDNODES.child(index)[0];if(xNode!=null){ cNodes.addItem(new TreeNode(xNode)); } }this.Children = cNodes;}}///转换为XMLpublic function ToXML():XML{var node:XML = new XML(" ");node.@text = this.text;node.@value = this.value;node.@Checked = this.Checked;node.@Depth = this.Depth;node.@Expanded = this.Expanded;node.@ImageTooltip = this.ImageTooltip;node.@ImageUrl = this.ImageUrl;node.@Selected = this.Selected;node.@ShowCheckBox = this.ShowCheckBox;node.@Target = this.Target;node.@Tooltip = this.Tooltip;node.@url = this.url;if(this.Children!=null && this.Children.length>0){for each(var cNode:TreeNode in this.Children){node.appendChild(cNode.ToXML());}}return node;}}}
package com.sample.Control{import mx.collections.ArrayCollection;///Tree控件的数据源容器public dynamic class TreeView{private var m_Nodes:ArrayCollection;///构造,参数可以为TreeNode、XML、XMLListpublic function TreeView(nodes:Object=null){m_Nodes=new ArrayCollection();if(nodes!=null){if(nodes is TreeNode){m_Nodes.addItem(nodes);}else if(nodes is XML){this.createFromXML(nodes as XML);}else if(nodes is XMLList){this.createFromXMLList(nodes as XMLList);}}}//从XML构造private function createFromXML(xml:XML):void{if(xml.@text!=undefined || xml.text!=undefined||xml.@TEXT!=undefined || xml.TEXT!=undefined){m_Nodes.addItem(new TreeNode(xml));}else if(xml.children().length()>0){createFromXMLList(xml.children());}}//从XMLList构造private function createFromXMLList(xmlList:XMLList):void{if(xmlList.length()>0){for(var index:int=0; indexlength();index++){var xml:XML = xmlList[index];m_Nodes.addItem(new TreeNode(xml));}}}///转换为XMLpublic function ToXML():XML{var xml:XML = new XML(" ");if(m_Nodes.length>0){for each(var node:TreeNode in m_Nodes){xml.appendChild(node.ToXML());}}return xml;}static public function GetCheckedTreeNode(Data:XMLList):ArrayCollection{if(Data==null)return null;var array:ArrayCollection = new ArrayCollection();for(var index:int =0;index length();index++){var xNode:XML = Data.child(index)[0];GetCheckedTreeNodeByNode(xNode,array);}return array;}static private function GetCheckedTreeNodeByNode(Node:XML,array:ArrayCollection):void{if(Node.@Checked=="true"){//本节点已经勾选array.addItem(Node);}if(Node.children().length()>0){//开始检测子节点for(var index:int =0;index length();index++){var cNode:XML = Node.child(index)[0];GetCheckedTreeNodeByNode(cNode,array);}}}}}
- ActionScript实现TreeView数据结构
- 实现treeview
- ActionScript实现喷泉效果
- ActionScript 实现雪花效果
- ActionScript实现长方形旋转
- bootstrap-treeview数据结构构建
- actionscript 实现单例模式
- ActionScript事件模型实现机制
- 使用ActionScript实现滤镜效果
- ActionScript 实现放大图片功能
- ActionScript
- actionscript
- actionscript
- TreeView简单实现
- Virtual Treeview 的实现
- 实现treeview notreenodecheckchanged 事件
- TreeView如何实现全选
- C#递归实现Treeview
- 单片机的概念
- jQuery对象与dom对象相互转换
- CWnd::GetCheckedRadioButton (判断当前一组单选按钮中哪一个被选中了)
- 大学我到底得到了什么?
- 一些成功人士的心得(新手必看)
- ActionScript实现TreeView数据结构
- 学习jquery的简单方法
- ZeroMemory函数:把一块内存初始化为0
- 今天上课上午我做了一个小游戏,flash的.鼠标类游戏.
- ASP.NET 菜单级别权限管理ORACLE数据库实现分析
- 破ginga.
- 一些在php中使用header函数设置http头的示例方法
- wicket中使用反射方法
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解决方法