代码之家  ›  专栏  ›  技术社区  ›  Joh

如何基于as3flash中的其他combobox动态更改combobox值

  •  0
  • Joh  · 技术社区  · 15 年前

    <tree>
    <branch1><node1/><node2/><node3/><branch1>
    <brach2><node1/><node2/><node3/><branch1>
    <branch3><node1/><node2/><node3/><branch1>
    <branch4><node1/><node2/><node3/><branch1>
    </tree>
    

    我有一个组合框,其中填充了

    branch1
    branch2
    branch3
    

    现在我希望当分支1被选中时,combobox2应该自动加载

    node1
    node2
    node3
    

    我现在的代码是

    for each(var element:XML in testXML.elements()) {
                        comboFar.addItem({label:element.name(),label:element.name()});
    
                    }
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Biroka    15 年前

    您应该为combobox1分配一个事件处理程序,如:

        var myXML:XML= <tree>
                           <branch name='1'><node name='1'/><node name='2'/><node name='3'/></branch>
                           <branch name='2' ><node name='1'/><node name='2'/><node name='3'/></branch>
                           <branch name='3'><node name='1'/><node name='2'/><node name='3'/></branch>
                       </tree> // or something like this
    
    
    
        combobox1.addEventListener(Event.CHANGE,changeListener); 
    
    
        function changeListener(e:Event):void
        {
             populateCombobox2(myXML.branch.(@name == e.currentTarget.selectedItem.@name));
        }
    
        function populateCombobox2(combo2Data:XML):void
        {
            combobox2.dataSource = combo2Data;
            combobox2.displayName = "@name"; // I don't remember if this is correct, and I can't 
                                             //check it now, but this is the logic.... if its not 
                                             //correct tell me, and when I get home I can tell you 
                                             //the correct way
        }