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

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

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

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

Всем здравствуйте!
Пытаюсь сделать выпадающий список как здесь http://subaru.com.ua/modelline/legacy_exterior360.html (выпадающий список в шапке)
Требования которые я перед собой ставлю:
- Весь текст должен грузится из xml
- При добавлении пунктов в xml это должно отражаться на кол-ве пунктов в флешке.
- При добавлении имён разной длины все поля автоматически выравниваются
Столкнулся с 2мя проблемами:
1. НЕ получается реализовать автоматическое выравнивание полей второго уровня таким образом, чтобы они не налезали друг на друга! Вся загвостка в том что они не просто так в одну строчку, а в две! Подскажите алгоритм который бы позволил их выровнять, плиз!
2. Как правильно удалить выпадающие ссылки при убирании мыши? Я пробую убирать главный контейнер, но при повторном наведении ссылки начинают дублироваться!
Вот код:
Код 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();
var upSubLinks_arr:Array = new Array();
var downSubLinks_arr:Array = new Array();
 
xmlLoader.load(new URLRequest("headerLinks.xml"));
 
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
 
var myLink:String = "www.google.com";
var myName:String = "google";
 
 
function xmlLoaded(e:Event):void
{
	//trace(e.target.data);
	xml = new XML(e.target.data);
	placeMainLinks("top");
 
	placeMainLinks("bottom");
}
 
function clearSubLinks(e:MouseEvent):void
{
	var childsNum:uint;
		if(subLink_mc.parent.numChildren > 0)
		{
			childsNum = subLink_mc.parent.numChildren;
			trace("childsNum " + childsNum);
			for(var i:uint; i < childsNum; i++)
			{
				 subLink_mc.parent.removeChild(subLink_mc.parent.getChildAt(0));
			}
		}
 
		trace("LINKS REMOVED");
		upSubLinks.visible = false;
		downSubLinks.visible = false;
}
 
subLinkContainer_mc.x = 100;
var myFormat:TextFormat = new TextFormat();
		myFormat.font = "Arial";
		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;
	var distanceX:Number = 0;
 
	if(level == "top")
	{
		xmlLevel = xml.topLinks.link;
		linkHolder = upMainLinks;
 
	}
	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_mc.name =String(i);
		mainLink_txt.htmlText = "<a href='" + xmlLevel[i].@url + "' >" + xmlLevel[i].@name + "</a>";
		mainLink_txt.setTextFormat(myFormat);
		mainLink_txt.selectable = false;
		mainLink_txt.autoSize = TextFieldAutoSize.LEFT;
		mainLink_txt.antiAliasType = flash.text.AntiAliasType.NORMAL;
		mainLink_txt.border = false;
		mainLink_mc.addChild(mainLink_txt);
		linkHolder.addChild(mainLink_mc);
		mainLink_mc.x =	distanceX;
		distanceX +=  mainLink_txt.width + 15;
		mainLink_mc.addEventListener(MouseEvent.ROLL_OVER, rollMainLink);
	}
}
 
function placeSubLinks(level:String, number:String):void
{
	var  xmlSubLevel:XMLList;
	var subLinkHolder:Sprite;
 
	trace("NUMBER " + number);
	if(level == "top")
	{
		xmlSubLevel = xml.topLinks.link[uint(number)].sublink;
		subLinkHolder = upSubLinks;
		trace("LENGTH " + xmlSubLevel)
	}
	else if(level == "bottom")
	{
		xmlSubLevel = xml.bottomLinks.link[0].sublink;
		subLinkHolder = downSubLinks;
	}
	trace("xmlSubLevel.length()" + xmlSubLevel.@name);
 
	for(var i:uint; i < xmlSubLevel.length(); i++)
	{
		subLinks_txt =  new TextField();
		subLink_mc = new Sprite();
		subLinks_txt.htmlText = "<a href='" + xmlSubLevel[i].@url + "' >" + xmlSubLevel[i].@name + "</a>";;
		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 = false;
		subLinks_txt.name = "subLink_txt" + i;
		subLink_mc.buttonMode = true;
		subLink_mc.addChild(subLinks_txt);
		subLink_mc.name = "subLink" + i;
		subLinkContainer_mc.addChild(subLink_mc);
		subLinkContainer_mc.name = "subLinksContainer" + i;
		subLinkHolder.addChild(subLinkContainer_mc);
		if(i%2 == 0)
		{
			subLink_mc.y = 0;
			subLink_mc.x = i * 50;
		}
		else
		{
			subLink_mc.y = subLink_mc.height;
			subLink_mc.x = (i-1) * 50 ;
		}
	}
	subLinkHolder.addEventListener(MouseEvent.ROLL_OUT, clearSubLinks);
}
 
function rollMainLink(e:MouseEvent):void
{
	trace("TARGET " + e.target.name);
	if(e.target.parent.name == "upMainLinks")
	{
		upSubLinks.visible = true;
 
		placeSubLinks("top", e.target.name);
	}
	else if(e.target.parent.name == "downMainLinks")
	{
		downSubLinks.visible = true; 
		placeSubLinks("bottom", e.target.name);
	}
	subLinkContainer_mc.x = e.target.x;
	trace(e.target.name);
	//e.target.addEventListener(MouseEvent.ROLL_OUT, rollOutMainLink);
 
}
 
function rollOutMainLink(e:MouseEvent):void
{
	trace(e.target.parent.name);
	if(e.target.parent.name == "upMainLinks")
	{
		upSubLinks.visible = false;
		//clearSubLinks();
	}
	else if(e.target.parent.name == "downMainLinks")
	{
		downSubLinks.visible = false;
	}
}
Вот сам проект вместе с xml:
Вложения
Тип файла: rar header.rar (188.6 Кб, 44 просмотров)


Последний раз редактировалось Universe; 09.07.2010 в 01:43.
Старый 09.07.2010, 11:15
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 2  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
2 . вы сума сошли их удалять? Только хайдить и дизайблить, еще лучше с анимацией, удалять не стоит.
1. Насчет выравнивания ничего не понял - по-моему все ровно, только все накладывается друг на друга из предыдущих менюшек.

Старый 14.07.2010, 15:19
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 3  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Ни с чего я не сошёл! А как вы без удаления этих объектов реализуете их смену?
Если их просто прятать - информация в выпадающих менюшках обновляться не будет!
Предлагаете создавать сразу все выпадающие мею из xml и показывать их при наведении на определённый пункт?

Старый 14.07.2010, 15:22
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 4  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Universe:
Цитата:
Если их просто прятать - информация в выпадающих менюшках обновляться не будет!
Какая информация? о_0
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

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

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

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


 


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


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