我正在开发一个项目,我正在使用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);
}
}
答案 0 :(得分: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);
}
}