there are many ways to do the spacing. if your mc is sized after the width
of the textfield, just add the witdh of the mc to its _x plus the 15px for
spacing to get the _x of the next mc.

On 8/17/06, Aaron Roberson <[EMAIL PROTECTED]> wrote:

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




--
John Van Horn
[EMAIL PROTECTED]
_______________________________________________
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

Reply via email to