论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

树形菜单的制作

文章类别:Flash AS | 发表日期:2009-8-9 16:09:06

树形菜单的制作

整理的一个树形菜单,拿出来分享一下。
效果图如下:

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>

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058