做开发的过程中用到,自己手写了一个,拿出来分享一下。 效果图如下:
flash文件中第一帧上的代码: 稍作解释,还有你需要那个级别层次显示都可以自己控制,不过得加些代码。 flash源文件中拖一个文本框,不是库中的,设置属性如图。在拖一个库中的滚动条放到文本框中,他们会自动吻合。
以下是flash中的源代码:
System.useCodepage = false; //课程xml //课程数组 var kc_XML:XML = new XML(); var kc_arr:Array = new Array(); //当前点击的对象的index var kc_NowIndex:Number = new Number(); kc_XML.ignoreWhite = true; //当课程数据加载完后执行下列语句 kc_XML.onLoad = function(succ) { if (succ) { jiexi(); showList(); //doAction(0); } }; //加载课程数据 kc_XML.load("tree.xml"); //解析加载的数据 function jiexi() { kc_len = kc_XML.childNodes[0].childNodes.length; var kc_node:XMLNode = kc_XML.childNodes[0].childNodes; for (var i:Number = 0; i<kc_len; i++) { var arr:Array = String(kc_node[i].attributes.timePoint).split(","); var arr_len:Number = arr.length; var timePoint_arr:Array = new Array(); for (var n:Number = 0; n<arr_len; n++) { timePoint_arr.push(hmsToM(arr[n])); } //将加载的数据解析好后放在kc_arr中 kc_arr.push({type:Number(kc_node[i].attributes.type), video:kc_node[i].attributes.video, label:"<a href='asfunction:doAction,"+i+"'>"+String(kc_node[i].attributes.name).substr(0, 16)+"</a>", showChild:true}); } } //点击后响应在这 function doAction(t:Number) { trace("你点击了"+kc_arr[t].label) // 脱壳//加壳 var str:String = kc_arr[kc_NowIndex].label; var begin_num:Number = str.indexOf(">", 0); var length_num:Number = str.lastIndexOf("<")-begin_num; kc_arr[kc_NowIndex].label = "<a href='asfunction:doAction,"+kc_NowIndex+"'>"+str.substr(begin_num+1, length_num-1)+"</a>"; kc_NowIndex = t; var str:String = kc_arr[t].label; var begin_num:Number = str.indexOf(">", 0); var length_num:Number = str.lastIndexOf("<")-begin_num; kc_arr[t].label = "<font color='#00ff00'>"+str.substr(begin_num+1, length_num-1)+"</font>"; showList(); } //高亮显示目录中的某个章节 function gaoliang(t:Number) { // 脱壳//加壳 var str:String = kc_arr[kc_NowIndex].label; var begin_num:Number = str.indexOf(">", 0); var length_num:Number = str.lastIndexOf("<")-begin_num; kc_arr[kc_NowIndex].label = "<a href='asfunction:doAction,"+kc_NowIndex+"'>"+str.substr(begin_num+1, length_num-1)+"</a>"; kc_NowIndex = t; var str:String = kc_arr[t].label; var begin_num:Number = str.indexOf(">", 0); var length_num:Number = str.lastIndexOf("<")-begin_num; kc_arr[t].label = "<font color='#00ff00'>"+str.substr(begin_num+1, length_num-1)+"</font>"; showList(); } //显示树状菜单 function showList() { var kc_len:Number = kc_arr.length; var str:String = new String(); var temp_type:Number = 0; for (var i:Number = 0; i<kc_len; i++) { temp_type = kc_arr[i].type; if (kc_arr[i].showChild == true) { if (kc_arr[i].type<kc_arr[i+1].type) { str += WS(kc_arr[i].type)+"<font color='#ff0000'><a href='asfunction:hideChild,"+i+"'>○</a></font> "+kc_arr[i].label+newline; } else { str += WS(kc_arr[i].type)+"Ο "+kc_arr[i].label+newline; } } else { str += WS(kc_arr[i].type)+"<font color='#ff0000'><a href='asfunction:showChild,"+i+"'>◎</a></font> "+kc_arr[i].label+newline; for (var n:Number = i+1; n<kc_len; n++) { if (kc_arr[n].type<=temp_type) { i = n-1; break; } } if (n == kc_len) { break; } } } list_txt.htmlText = str; } //显示子菜单 function showChild(t:Number) { kc_arr[t].showChild = true; showList(); } //隐藏子菜单 function hideChild(t:Number) { kc_arr[t].showChild = false; showList(); } //填充空格形成层级 function WS(n:Number) { var temp_str:String = new String(); for (var i:Number = 1; i<n; i++) { temp_str += " "; } return temp_str; }
下面是xml文件 其中的type属性指示的是层级。暂未设置层级数,内部并无检测树形菜单的可靠性,故写下列文件需小心
<a> <section type="1" name="信息组织课程介绍 " video="01/localclip.asx"/> <section type="2" name="课程概况 " video="01/localclip.asx"/> <section type="2" name="课程要求 " video="01/localclip.asx"/> <section type="2" name="教学方式 " video="01/localclip.asx"/> <section type="2" name="四、教材与参考资料 " video="01/localclip.asx"/> <section type="1" name="第一章 信息组织概述 " video="01/localclip.asx"/> <section type="2" name="一.信息组织的含义 " video="01/localclip.asx"/> <section type="3" name="信息组织的对象-信息资源范围 " video="01/localclip.asx"/> <section type="3" name="信息组织与信息检索流程图 " video="01/localclip.asx"/> <section type="3" name="信息组织与信息检索关系 " video="01/localclip.asx"/> <section type="2" name="二.信息组织的形式和检索途径 " video="01/localclip.asx"/> <section type="3" name="2.检索体系的类型 " video="01/localclip.asx"/> <section type="3" name="文献目录 " video="01/localclip.asx"/> <section type="3" name="索引 " video="01/localclip.asx"/> <section type="3" name="机读数据库 " video="01/localclip.asx"/> <section type="3" name="网络搜索引擎 " video="01/localclip.asx"/> <section type="3" name="2)按照标识特征和提供的检索途径分 " video="01/localclip.asx"/> <section type="3" name="3)按照标识记录方式分 " video="01/localclip.asx"/> <section type="2" name="三.信息组织处理方式和研究内容 " video="01/localclip.asx"/> <section type="3" name="1.信息处理的任务 " video="01/localclip.asx"/> <section type="3" name="2.信息处理的方法 " video="01/localclip.asx"/> <section type="3" name="信息组织研究领域 " video="01/localclip.asx"/> </a>
源文件下载:treelist.rar
经典论坛交流: http://bbs.blueidea.com/thread-2838524-1-2.html
本文链接:http://www.blueidea.com/download/product/2008/5573.asp
出处:蓝色理想
责任编辑:bluehearts
|