I am creating a dynamic drop down menu using XML and I am having trouble spacing out each menu item.
Is there a way of determing the size of the text in each xml node? Thanks for your help, Aaron P.S. This menu is based on a tutorial at kirupa.com. Here is the XML: <?xml version="1.0" encoding="iso-8859-1"?> <menu name="navigation"> <item name="Home" link="http://whitehorsemedia.com" /> <menu name="About Us" link="http://whitehorsemedia.com/about/index.cfm"> <item name="Our Name" link="http://whitehorsemedia.com/about/name.cfm" /> <item name="News" link="http://whitehorsemedia.com/about/news.cfm" /> <item name="We Believe" link="http://whitehorsemedia.com/about/believe.cfm" /> <item name="Staff" link="http://whitehorsemedia.com/about/staff.cfm" /> <item name="Projects" link="http://whitehorsemedia.com/about/projects.cfm" /> </menu> </menu> Here is the ActionScript: // generates a list of menu items (effectively one menu) // given the inputted parameters. This makes the main menu // as well as any of the submenus GenerateMenu = function(container, name, x, y, depth, node_xml) { // variable declarations var curr_node; var curr_item; var curr_menu = container.createEmptyMovieClip(name, depth); // for all items or XML nodes (items and menus) // within this node_xml passed for this menu for (var i=0; i<node_xml.childNodes.length; i++) { // movieclip for each menu item curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i); curr_item._x = x + i*curr_item._width; curr_item._y = y; curr_item.trackAsMenu = true; // item properties assigned from XML curr_node = node_xml.childNodes[i]; curr_item.link = curr_node.attributes.link; curr_item.name.text = curr_node.attributes.name; // item submenu behavior for rollover event if (node_xml.childNodes[i].nodeName == "menu"){ // open a submenu curr_item.node_xml = curr_node; curr_item.onRollOver = curr_item.onDragOver = function(){ var x = 200; var y = this._y + this._height; GenerateMenu(curr_menu, "submenu_mc", x, y, 1000, this.node_xml); // show a hover color var col = new Color(this.background); col.setRGB(0xf4faff); }; }else{ // nodeName == "item" curr_item.arrow._visible = false; // close existing submenu curr_item.onRollOver = curr_item.onDragOver = function(){ curr_menu.submenu_mc.removeMovieClip(); // show a hover color var col = new Color(this.background); col.setRGB(0xf4faff); }; } curr_item.onRollOut = curr_item.onDragOut = function(){ // restore color var col = new Color(this.background); col.setTransform({ra:100,rb:0,ga:100,gb:0,ba:100,bb:0}); }; // any item, menu opening or not can have actions curr_item.onRelease = function(){ Actions["goToURL"](this.link); CloseSubmenus(); }; } // end for loop }; // create the main menu, this will be constantly visible CreateMainMenu = function(x, y, depth, menu_xml){ // generate a menu list GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild); // close only submenus if visible durring a mouseup // this main menu (mainmenu_mc) will remain mainmenu_mc.onMouseUp = function(){ if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true)){ CloseSubmenus(); } }; }; // closes all submenus by removing the submenu_mc // in the main menu (if it exists) CloseSubmenus = function(){ mainmenu_mc.submenu_mc.removeMovieClip(); }; // This actions object handles methods for actions // defined by the XML called when a menu item is pressed Actions = Object(); Actions.gotoURL = function(urlVar){ getURL(urlVar, "_blank"); }; // load XML, when done, run CreateMainMenu to interpret it menu_xml = new XML(); menu_xml.ignoreWhite = true; menu_xml.onLoad = function(ok){ // create main menu after successful loading of XML if (ok){ CreateMainMenu(200, 250, 0, this); } }; // load first XML menu menu_xml.load("menu.xml"); _______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com