Привет!Делаю выпадающий список и столкнулся с одной проблемкой! При отведении курсора от пункта меню подпункты должны исчезать...т.к. я всё делаю через xml у меня за создание всех подпунктов в каждом пункте отвечает одна и та же функция! Следовательно для того чтобы обновить кол-во текстовых полей и содержимое в них я повторно запускаю функцию создания полей и их заполнения через xml! Получается чтобы при этом не происходило наслоения старых пунктов на новые я должен каким то образом удалять старые пункты перед тем как создавать новые! Описываю структуру своих ссылок:
1. Есть мувик на сцене, в который будут помещаться ссылки(пока внутри тока фон)
2. Создаю программно спрайт в этом мувике в который и буду помещать мувики с текстом ссылок!(чтобы они все были в отдельном контейнере)
3. В созданный ранее контейнер помещаю ссылки при помощи for'a.
ну и т.д.
Получается чтобы очищать сцену от ранее созданных подпунктов я просто удаляю мувик контейнер(который я создавал на пункте 2). Он то вроде и удаляется, но почему-то кол-во мувиков в нём всёравно увеличивается! Подскажите, как правильно очищать подпункты со сцены и правлен ли вообще алгоритм создания в моём случае?Спасибо!
Прикрепляю весь код(он в некоторых местах не доделан - это касается загрузки самого xml в текстовые поля в цикле, но на суть вопроса и как я понимаю ответа это повлиять не должно)

Код AS3:
var xml:XML;
var mainLink_txt:TextField;
var subLinks_txt:TextField;
var mainLink_mc:Sprite;
var subLink_mc:Sprite;
var subLinkContainer_mc:Sprite = new Sprite();
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.load(new URLRequest("../xml/headerLinks.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(e:Event):void
{
//trace(e.target.data);
xml = XML(e.target.data);
//trace(xml.top);
placeMainLinks("top");
placeMainLinks("bottom");
}
function clearSubLinks():void
{
trace(subLinkContainer_mc.name);
upSubLinks.removeChild(subLinkContainer_mc);
}
subLinkContainer_mc.x = 100;
var myFormat:TextFormat = new TextFormat();
myFormat.font = "Verdana";
myFormat.size = 12;
myFormat.color = 0x000000;
myFormat.italic = false;
myFormat.bold = true;
myFormat.align = TextFormatAlign.JUSTIFY;
upSubLinks.visible = false;
downSubLinks.visible = false;
function placeMainLinks(level:String):void
{
var xmlLevel:XMLList;
var linkHolder:MovieClip;
if(level == "top")
{
xmlLevel = xml.topLinks.link;
linkHolder = upMainLinks;
//trace(xmlLevel.length())
}
else if(level == "bottom")
{
xmlLevel = xml.bottomLinks.link;
linkHolder = downMainLinks;
}
for(var i:uint; i< xmlLevel.length(); i++)
{
mainLink_txt = new TextField();
mainLink_mc = new Sprite();
mainLink_txt.text = "works";
mainLink_txt.setTextFormat(myFormat);
mainLink_txt.selectable = false;
mainLink_txt.autoSize = TextFieldAutoSize.LEFT;
mainLink_txt.antiAliasType = flash.text.AntiAliasType.NORMAL;
mainLink_txt.embedFonts = true;
mainLink_txt.border = true;
mainLink_mc.buttonMode = true;
mainLink_mc.addChild(mainLink_txt);
linkHolder.addChild(mainLink_mc);
mainLink_mc.x = i * 50;
mainLink_mc.addEventListener(MouseEvent.ROLL_OVER, rollMainLink);
}
}
function placeSubLinks(level:String):void
{
var xmlLevel:XMLList;
var linkHolder:MovieClip;
if(level == "top")
{
xmlLevel = xml.bottomLinks.link;
linkHolder = upSubLinks;
//trace(xmlLevel.length())
}
else if(level == "bottom")
{
xmlLevel = xml.bottomLinks.link;
linkHolder = downSubLinks;
}
for(var i:uint; i< xmlLevel.length(); i++)
{
subLinks_txt = new TextField();
subLink_mc = new Sprite();
subLinks_txt.text = "works";
subLinks_txt.setTextFormat(myFormat);
subLinks_txt.selectable = false;
subLinks_txt.autoSize = TextFieldAutoSize.LEFT;
subLinks_txt.antiAliasType = flash.text.AntiAliasType.NORMAL;
subLinks_txt.embedFonts = true;
subLinks_txt.border = true;
subLink_mc.buttonMode = true;
subLink_mc.addChild(subLinks_txt);
subLink_mc.name = "subLink" + i;
subLinkContainer_mc.addChild(subLink_mc);
subLinkContainer_mc.name = "linksContainer";
linkHolder.addChild(subLinkContainer_mc);
if(i%2 == 0)
{
subLink_mc.y = 0;
subLink_mc.x = i * 25;
}
else
{
subLink_mc.y = 15;
subLink_mc.x = (i-1) * 25;
}
}
}
function rollMainLink(e:MouseEvent):void
{
if(e.target.parent.name == "upMainLinks")
{
upSubLinks.visible = true;
placeSubLinks("top");
}
else if(e.target.parent.name == "downMainLinks")
{
downSubLinks.visible = true;
placeSubLinks("bottom");
}
subLinkContainer_mc.x = e.target.x;
e.target.addEventListener(MouseEvent.ROLL_OUT, rollOutMainLink);
}
function rollOutMainLink(e:MouseEvent):void
{
if(e.target.parent.name == "upMainLinks")
{
//upSubLinks.visible = false;
trace(subLinkContainer_mc.numChildren);
clearSubLinks();
}
else if(e.target.parent.name == "downMainLinks")
{
downSubLinks.visible = false;
}
}