|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Выравнивание элементов выпадающего списка!
Всем здравствуйте!
Пытаюсь сделать выпадающий список как здесь http://subaru.com.ua/modelline/legacy_exterior360.html (выпадающий список в шапке) Требования которые я перед собой ставлю: - Весь текст должен грузится из xml - При добавлении пунктов в xml это должно отражаться на кол-ве пунктов в флешке. - При добавлении имён разной длины все поля автоматически выравниваются Столкнулся с 2мя проблемами: 1. НЕ получается реализовать автоматическое выравнивание полей второго уровня таким образом, чтобы они не налезали друг на друга! Вся загвостка в том что они не просто так в одну строчку, а в две! Подскажите алгоритм который бы позволил их выровнять, плиз! 2. Как правильно удалить выпадающие ссылки при убирании мыши? Я пробую убирать главный контейнер, но при повторном наведении ссылки начинают дублироваться! Вот код: 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; } } Последний раз редактировалось Universe; 09.07.2010 в 01:43. |
|
|||||
Регистрация: Feb 2007
Сообщений: 563
|
2 . вы сума сошли их удалять? Только хайдить и дизайблить, еще лучше с анимацией, удалять не стоит.
1. Насчет выравнивания ничего не понял - по-моему все ровно, только все накладывается друг на друга из предыдущих менюшек. |
|
|||||
Ни с чего я не сошёл! А как вы без удаления этих объектов реализуете их смену?
Если их просто прятать - информация в выпадающих менюшках обновляться не будет! Предлагаете создавать сразу все выпадающие мею из xml и показывать их при наведении на определённый пункт? |
|
|||||
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
2 Universe:
Цитата:
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
Часовой пояс GMT +4, время: 14:50. |
|
« Предыдущая тема | Следующая тема » |
|
|