最近要做个可以动态修改的菜单,本来想直接用flash来读数据库数据的,但新学了点xml语言,试着用flash来解析xml文件来获取数据,辛苦了半天,终于把我想要的数据给弄到了数组里面,现在把这个部分写下来,大家看看:
首先建立的是xml数据文件,因我要做的是一个菜单,所以我就写了个菜单的XML,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<fild>
<menu id="1" menutext="首页" menuurl="index.asp">
<submenu submenutext="首页" submenuurl="index.asp"/>
</menu>
<menu id="2" menutext="火热促销" menuurl="huolairema">
<submenu submenutext="特别推介" submenuurl="aaaa"/>
<submenu submenutext="促销商品" submenuurl="aaaa"/>
</menu>
<menu id="3" menutext="所有商品" menuurl="aaaa">
<submenu submenutext="野营/旅行" submenuurl="aaaa"/>
<submenu submenutext="鞋袜类" submenuurl="aaaa"/>
<submenu submenutext="户外服装" submenuurl="aaaa"/>
<submenu submenutext="水上运动" submenuurl="aaaa"/>
<submenu submenutext="工具/仪器/眼镜" submenuurl="aaaa"/>
<submenu submenutext="登山攀岩" submenuurl="aaaa"/>
<submenu submenutext="户外书籍" submenuurl="aaaa"/>
</menu>
<menu id="4" menutext="评测中心" menuurl="aaaa">
<submenu submenutext="评测中心" submenuurl="sd"/>
</menu>
<menu id="5" menutext="新品速递" menuurl="aaaa">
<submenu submenutext="新品速递" submenuurl="fhjg"/>
</menu>
<menu id="6" menutext="选购指南" menuurl="aaaa">
<submenu submenutext="选购指南" submenuurl="ryry"/>
</menu>
<menu id="7" menutext="二手交易" menuurl="aaaa">
<submenu submenutext="二手交易" submenuurl="dgdh"/>
</menu>
<menu id="8" menutext="户外论坛" menuurl="aaaa">
<submenu submenutext="户外论坛" submenuurl="dfhdfh"/>
</menu>
</fild>
这个XML文件我自认为还是比较合理的,分级也是按照我的需要,且好简单,要写入数据也容易(只可惜我不会,如没有别人合做,我只能改这个文件来改我的菜单了,呵呵)
下面是在flash里的代码。我写的是一个as文件,我认为这样做好看点,一版一版地看,呵呵,这可是个好习惯呢。
menu.as:
mymenu = new XML();
mymenu.load("menu.xml");
mymenu.ignoreWhite = true;
mymenu.onLoad = findThefild;
var passItOn = "";
menu_text = "";
var menu_array = new Array();
var submenu_array = new Array();
var menuurl_array = new Array();
var submenuurl_array = new Array();
var i:Number = 0;
// -----------------------------------------------------------
function findThefild() {
//trace(mymenu);
for (var counter01 = 0; counter01<=mymenu.childNodes.length; counter01++) {
if (this.childNodes[counter01].nodeName.toLowerCase() == "fild") {
passItOn = this.childNodes[counter01];
//trace(passItOn.firstChild.attributes.id)
findTheMenu(passItOn);
//遍历主菜单
}
}
}
function findTheMenu(menulevel) {
for (var counter02 = 0; counter02<=menulevel.childNodes.length; counter02++) {
//trace(menulevel.childNodes[counter02].nodeName)
if (menulevel.childNodes[counter02].nodeName.toLowerCase() == "menu") {
passItOn = menulevel.childNodes[counter02];
//trace(passItOn.attributes.menutext)
menu_text = passItOn.attributes.menutext;
menu_array[counter02] = menu_text;
//trace("menu_array"+[counter02]+"="+menu_array[counter02]);
//获得主菜单数组
menu_url = passItOn.attributes.menuurl;
menuurl_array[counter02] = menu_url;
//trace("menuurl_array"+[counter02]+"="+menuurl_array[counter02]);
//获得主菜单链接地址数组
//-----------------------------------------------------创建菜单影片剪辑
Creatmenu(menu_array[counter02], menuurl_array[counter02]);
//遍历子菜单
findTheSubmenu(passItOn);
trace("the"+" "+counter02+" "+"trun");
}
}
}
function findTheSubmenu(submenulevel) {
for (var counter03 = 0; counter03<=submenulevel.childNodes.length; counter03++) {
//trace(menulevel.childNodes[counter03].nodeName)
if (submenulevel.childNodes[counter03].nodeName.toLowerCase() == "submenu") {
passItOn = submenulevel.childNodes[counter03];
trace(passItOn.attributes.submenutext);
//submenu_text = passItOn.attributes.submenutext;
submenu_array[counter03] = passItOn.attributes.submenutext;
submenuurl_array[counter03] = passItOn.attributes.submenuurl;
trace("submenu_array"+[counter03]+"="+submenu_array[counter03]);
trace("submenuurl_array"+[counter03]+"="+submenuurl_array[counter03]);
//获得子菜单数组与链接数组
//----------------------------------------------------为每个影片加载上子菜单
CreatsubMenu(submenu_array[counter03], submenuurl_array[counter03]);
}
}
}
剩下的工作是flash里的菜单了,到这儿也只是写了处理xml的部分。只有望下次了。
首先建立的是xml数据文件,因我要做的是一个菜单,所以我就写了个菜单的XML,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<fild>
<menu id="1" menutext="首页" menuurl="index.asp">
<submenu submenutext="首页" submenuurl="index.asp"/>
</menu>
<menu id="2" menutext="火热促销" menuurl="huolairema">
<submenu submenutext="特别推介" submenuurl="aaaa"/>
<submenu submenutext="促销商品" submenuurl="aaaa"/>
</menu>
<menu id="3" menutext="所有商品" menuurl="aaaa">
<submenu submenutext="野营/旅行" submenuurl="aaaa"/>
<submenu submenutext="鞋袜类" submenuurl="aaaa"/>
<submenu submenutext="户外服装" submenuurl="aaaa"/>
<submenu submenutext="水上运动" submenuurl="aaaa"/>
<submenu submenutext="工具/仪器/眼镜" submenuurl="aaaa"/>
<submenu submenutext="登山攀岩" submenuurl="aaaa"/>
<submenu submenutext="户外书籍" submenuurl="aaaa"/>
</menu>
<menu id="4" menutext="评测中心" menuurl="aaaa">
<submenu submenutext="评测中心" submenuurl="sd"/>
</menu>
<menu id="5" menutext="新品速递" menuurl="aaaa">
<submenu submenutext="新品速递" submenuurl="fhjg"/>
</menu>
<menu id="6" menutext="选购指南" menuurl="aaaa">
<submenu submenutext="选购指南" submenuurl="ryry"/>
</menu>
<menu id="7" menutext="二手交易" menuurl="aaaa">
<submenu submenutext="二手交易" submenuurl="dgdh"/>
</menu>
<menu id="8" menutext="户外论坛" menuurl="aaaa">
<submenu submenutext="户外论坛" submenuurl="dfhdfh"/>
</menu>
</fild>
这个XML文件我自认为还是比较合理的,分级也是按照我的需要,且好简单,要写入数据也容易(只可惜我不会,如没有别人合做,我只能改这个文件来改我的菜单了,呵呵)
下面是在flash里的代码。我写的是一个as文件,我认为这样做好看点,一版一版地看,呵呵,这可是个好习惯呢。
menu.as:
mymenu = new XML();
mymenu.load("menu.xml");
mymenu.ignoreWhite = true;
mymenu.onLoad = findThefild;
var passItOn = "";
menu_text = "";
var menu_array = new Array();
var submenu_array = new Array();
var menuurl_array = new Array();
var submenuurl_array = new Array();
var i:Number = 0;
// -----------------------------------------------------------
function findThefild() {
//trace(mymenu);
for (var counter01 = 0; counter01<=mymenu.childNodes.length; counter01++) {
if (this.childNodes[counter01].nodeName.toLowerCase() == "fild") {
passItOn = this.childNodes[counter01];
//trace(passItOn.firstChild.attributes.id)
findTheMenu(passItOn);
//遍历主菜单
}
}
}
function findTheMenu(menulevel) {
for (var counter02 = 0; counter02<=menulevel.childNodes.length; counter02++) {
//trace(menulevel.childNodes[counter02].nodeName)
if (menulevel.childNodes[counter02].nodeName.toLowerCase() == "menu") {
passItOn = menulevel.childNodes[counter02];
//trace(passItOn.attributes.menutext)
menu_text = passItOn.attributes.menutext;
menu_array[counter02] = menu_text;
//trace("menu_array"+[counter02]+"="+menu_array[counter02]);
//获得主菜单数组
menu_url = passItOn.attributes.menuurl;
menuurl_array[counter02] = menu_url;
//trace("menuurl_array"+[counter02]+"="+menuurl_array[counter02]);
//获得主菜单链接地址数组
//-----------------------------------------------------创建菜单影片剪辑
Creatmenu(menu_array[counter02], menuurl_array[counter02]);
//遍历子菜单
findTheSubmenu(passItOn);
trace("the"+" "+counter02+" "+"trun");
}
}
}
function findTheSubmenu(submenulevel) {
for (var counter03 = 0; counter03<=submenulevel.childNodes.length; counter03++) {
//trace(menulevel.childNodes[counter03].nodeName)
if (submenulevel.childNodes[counter03].nodeName.toLowerCase() == "submenu") {
passItOn = submenulevel.childNodes[counter03];
trace(passItOn.attributes.submenutext);
//submenu_text = passItOn.attributes.submenutext;
submenu_array[counter03] = passItOn.attributes.submenutext;
submenuurl_array[counter03] = passItOn.attributes.submenuurl;
trace("submenu_array"+[counter03]+"="+submenu_array[counter03]);
trace("submenuurl_array"+[counter03]+"="+submenuurl_array[counter03]);
//获得子菜单数组与链接数组
//----------------------------------------------------为每个影片加载上子菜单
CreatsubMenu(submenu_array[counter03], submenuurl_array[counter03]);
}
}
}
剩下的工作是flash里的菜单了,到这儿也只是写了处理xml的部分。只有望下次了。