做開發(fā)的過程中用到,自己手寫了一個(gè),拿出來分享一下。
效果圖如下:

flash文件中第一幀上的代碼:
稍作解釋,還有你需要那個(gè)級別層次顯示都可以自己控制,不過得加些代碼。
flash源文件中拖一個(gè)文本框,不是庫中的,設(shè)置屬性如圖。在拖一個(gè)庫中的滾動條放到文本框中,他們會自動吻合。

以下是flash中的源代碼:
System.useCodepage = false;
//課程xml
//課程數(shù)組
var kc_XML:XML = new XML();
var kc_arr:Array = new Array();
//當(dāng)前點(diǎn)擊的對象的index
var kc_NowIndex:Number = new Number();
kc_XML.ignoreWhite = true;
//當(dāng)課程數(shù)據(jù)加載完后執(zhí)行下列語句
kc_XML.onLoad = function(succ) {
if (succ) {
jiexi();
showList();
//doAction(0);
}
};
//加載課程數(shù)據(jù)
kc_XML.load("tree.xml");
//解析加載的數(shù)據(jù)
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]));
}
//將加載的數(shù)據(jù)解析好后放在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});
}
}
//點(diǎn)擊后響應(yīng)在這
function doAction(t:Number) {
trace("你點(diǎn)擊了"+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();
}
//高亮顯示目錄中的某個(gè)章節(jié)
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屬性指示的是層級。暫未設(shè)置層級數(shù),內(nèi)部并無檢測樹形菜單的可靠性,故寫下列文件需小心
<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="教學(xué)方式 " 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="信息組織與信息檢索關(guān)系 " 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="文獻(xiàn)目錄 " video="01/localclip.asx"/>
<section type="3" name="索引 " video="01/localclip.asx"/>
<section type="3" name="機(jī)讀數(shù)據(jù)庫 " video="01/localclip.asx"/>
<section type="3" name="網(wǎng)絡(luò)搜索引擎 " video="01/localclip.asx"/>
<section type="3" name="2)按照標(biāo)識特征和提供的檢索途徑分 " video="01/localclip.asx"/>
<section type="3" name="3)按照標(biāo)識記錄方式分 " video="01/localclip.asx"/>
<section type="2" name="三.信息組織處理方式和研究內(nèi)容 " video="01/localclip.asx"/>
<section type="3" name="1.信息處理的任務(wù) " video="01/localclip.asx"/>
<section type="3" name="2.信息處理的方法 " video="01/localclip.asx"/>
<section type="3" name="信息組織研究領(lǐng)域 " video="01/localclip.asx"/>
</a>源文件下載:treelist.rar