Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.06.2010, 02:23
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 1  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Question Выпадающий список

Привет!Делаю выпадающий список и столкнулся с одной проблемкой! При отведении курсора от пункта меню подпункты должны исчезать...т.к. я всё делаю через 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;
	}
}

Создать новую тему   Часовой пояс GMT +4, время: 03:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.