ComboBox,实现三级联动菜单

写了不知道多久 的随笔文章了,发现自己的blog除了成为一个发牢骚的小资日记以外,已经没有什么可取之处了,130多篇文章,我的flash笔记只有6篇,而自己写的又是少中又少!其实最近学了不少东西,不过不拿来分享一下真是太不厚道了!
flash中的AS,先拖出3个ComboBox组件放在场景中,命名cb1、cb2、cb3。
程序代码 程序代码

System.useCodepage = true;
var comboBoxes = new Array(cb1, cb2, cb3);
//cb1,cb2,cb3分别是3个下拉列表的实例名
//------------------------------------------
//--------------------- XML ----------------
var myXML:XML = new XML();
myXML.ignoreWhite = true;
//载入XML,外部XML文件名:smpXML.xml
myXML.load("smpXML.xml");
myXML.onLoad = function(ok) {
    if (ok) {
        //解析XML成数组,并提供给comboBox
        _root.comboBoxes[0].dataProvider = additem(myXML.firstChild, "index");
        _root.comboBoxes[1].dataProvider = additem(myXML.firstChild.firstChild, "index");
        _root.comboBoxes[2].dataProvider = additem(myXML.firstChild.firstChild.firstChild, "index");
   //将网址取出存在数组当中
   url_table=new Array();
   url_table=additem(myXML.firstChild.firstChild.firstChild, "arr");
    } else {
        trace("无法载入外部XML文件");
    }
};
//------------------------------------------------
//--------------- 解析XML到数组的函数 -------------
//参数xml: 对象xml;
//参数attributesName: 感兴趣的属性名称

function additem(a, b):Array {
table = new Array();
//trace(a[i].attributes[b]);
  for (each in a.childNodes) {
    var subXML = a.childNodes[each];
    table.addItem(subXML.attributes[b]);
  }
  trace("数据加载完成");

return table.sort();
}
//--------------------------------------------------
//-------- 自定义内容:设置comboBox之间的关联 --------
//看不懂的话,查帮助
form = new Object();
form.change = function(eventObj) {
    var obj = eventObj.target;
    if (obj == _root.comboBoxes[0])
{
        _root.comboBoxes[1].dataProvider = additem(myXML.firstChild.childNodes[obj.selectedIndex], "index");
    }
    _root.comboBoxes[2].dataProvider = additem(myXML.firstChild.childNodes[_root.comboBoxes[0].selectedIndex].childNodes[_root.comboBoxes[1].selectedIndex], "index");
};
//---------------------------
//取出网址连接.我们将网址存在一个数组当中.
//当点击时.找出相应的连接
//---------------------------
url=new Object();
url.change = function(eventObj) {
var obj = eventObj.target;
  if (obj == _root.comboBoxes[2])
  {     trace(url_table[obj.selectedIndex]);
    getURL(url_table[obj.selectedIndex]);
  }

}


_root.comboBoxes[0].addEventListener("change", form);
_root.comboBoxes[1].addEventListener("change", form);
_root.comboBoxes[2].addEventListener("change", url);


这是xml文件(smpXML.xml)
程序代码 程序代码

<?xml version="1.0" encoding="gb2312"?>
<items>
<sub index="辽宁">
     <sub2 index="大连">
       <item index="甘井子" arr="http://www.sohu.com"/>
       <item index="西岗区" arr="http://www.baidu.com"/>
       <item index="中山区" arr="http://www.51uc.com"/>
     </sub2>
     <sub2 index="葫芦岛">
       <item index="望海寺" arr="http://www.163.com"/>
       <item index="西山坡" arr="http://www.google.com"/>
       <item index="锦西市" arr="http://www.sony.com"/>
     </sub2>
     <sub2 index="锦州">
       <item index="古塔区"/>
       <item index="大凌河"/>
     </sub2>
</sub>
<sub index="黑龙江">
     <sub2 index="哈尔滨">
       <item index="道里"/>
       <item index="道外"/>
       <item index="学府"/>
     </sub2>
     <sub2 index="鹤岗">
       <item index="鹤县"/>
       <item index="鹤村"/>
       <item index="鹤家"/>
     </sub2>
     <sub2 index="齐齐哈尔">
       <item index="讷河"/>
       <item index="东北街"/>
     </sub2>
</sub>
</items>  

Flash动画



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.