I'm half way there... I figured out how to resize the movie clip based on the length of the text being loaded from the name attribute of the xml node. I added the following line to my code:
curr_item.name.autoSize = "left"; Now I need to figure out how to make the spacing between each menu item 15px. Sounds simple, and is for others, but now that each movie clip is a different size I'm not sure how to do that. Any help on that would be appreciated! -Aaron On 8/17/06, Elena Blanco <[EMAIL PROTECTED]> wrote:
By size, are you referring to the length of the text (in this case the name?) -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Aaron Roberson Sent: Thursday, August 17, 2006 1:55 PM To: flashcoders@chattyfig.figleaf.com Subject: [Flashcoders] Help Getting Size of Text Dynamically 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
_______________________________________________ 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