1

我正在开发一个使用 XML 创建按钮列表的项目。当您按下其中一个按钮时,会加载一个新的 xml,它可以创建“子按钮”。

使用我编写的代码,一切正常,除了当我按下顶级按钮(一级按钮)时,它会加载创建子按钮并加载一些文本数据的 xml,但是当我按下另一个顶级按钮时,它加载新的 xml,创建子按钮,加载不同的文本数据,........但是,旧的子按钮也在那里....

我希望能够删除旧的子按钮。我已经用谷歌搜索了,但我无法获得任何帮助:/ 任何帮助将不胜感激。

代码从创建顶级按钮并为这些按钮分配 CLICK MouseEvent 开始。

function onButtonClick(me:MouseEvent):void {
    xmlLoader.load(new URLRequest(bookElement.xmllink.toString()));
    xmlLoader.addEventListener(Event.COMPLETE, onSubXmlLoad);
}

function onSubXmlLoad(e:Event):void {
    trace("xml loaded");
    new_sub_xml = new XML(sub_xmlLoader.data);
    var Books:XMLList = new_sub_xml.name.books;
    var len:int = Books.length();
    trace(len + " Books");

    for (var i:int = 0; i < len; i++) {
            sub_btn = new SubFeatureButton();
            sub_btn.x = 10 + i * 50;
            sub_btn.y = 90;
            addChild(sub_btn);
            sub_btn.name = "sub_btn" + i;
            sub_btn.buttonMode = true;
            trace(sub_btn + i);

    }
}
4

1 回答 1

0

您可能应该为您的子导航按钮创建一个容器,同时将这些按钮的引用保存在某种数组中会使事情变得更容易。

下面的代码应该可以工作

var subNav:Sprite = new Sprite();
subNav.x = 0;
subNav.y = 0;//put the right values here
addChild(subNav);

function onButtonClick(me:MouseEvent):void {
    xmlLoader.load(new URLRequest(bookElement.xmllink.toString()));
    xmlLoader.addEventListener(Event.COMPLETE, onSubXmlLoad);
}

function onSubXmlLoad(e:Event):void {
    trace("xml loaded");
    new_sub_xml = new XML(sub_xmlLoader.data);
    var Books:XMLList = new_sub_xml.name.books;
    var len:int = Books.length();
    trace(len + " Books");

    while(subNav.numChildren >0)
    {
        subNav.removeChildAt(0);
    }

    for (var i:int = 0; i < len; i++) {
            sub_btn = new SubFeatureButton();
            sub_btn.x = 10 + i * 50;
            sub_btn.y = 90;
            subNav.addChild(sub_btn);
            sub_btn.name = "sub_btn" + i;
            sub_btn.buttonMode = true;
            trace(sub_btn + i);

    }
}
于 2013-03-18T10:59:10.707 回答