AS3 Dynamic menu

Hi Guys!

I’m having a bit of trouble getting a dynamic menu to work is AS3. Here’s the code…

import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;
ColorShortcuts.init();

var menu:Array = new Array (“1”,“2”,“3”,“4”,“5”);
var _open:Boolean = false;
var menuTab:MenuTab = new MenuTab();
var off:Object;

function _addMenu():void
{
addChild(menuTab);

    menuTab.addEventListener(MouseEvent.ROLL_OUT, mOut);
    menuTab.addEventListener(MouseEvent.ROLL_OVER, mOver);
    
    for (var i:int = 0; i < menu.length; i++) 
    {
        var holder:MovieClip = new MovieClip();
        var menuItem:MenuItem = new MenuItem();
        menuItem.tf.txt.text = menu*;
        menuItem.name = "menu" + i;
        menuItem.buttonMode = true;
        menuItem.visible = true;
        menuItem.mouseChildren = false;
        menuItem.addEventListener(MouseEvent.ROLL_OUT, bOut);
        menuItem.addEventListener(MouseEvent.ROLL_OVER, bOver);
        menuItem.addEventListener(MouseEvent.CLICK, bClick);
        holder.addEventListener(MouseEvent.ROLL_OUT, mOut);
        holder.addEventListener(MouseEvent.ROLL_OVER, mOver);
        holder.addChild(menuItem);
        addChildAt(holder, 0)
        menu* = holder
    }    
}

function mOver( e:MouseEvent )
{
if( !_open )
{
for( var i=0; i<menu.length; i++ )
{
var item:DisplayObject = menu*
item.visible = true;
Tweener.addTween(item, {alpha:1, y:(item.height-1)*i, time:.3, transition:“easeOut” } );
}
}
_open = true;
}

function mOut( e:MouseEvent )
{
if( _open )
{
for( var i=0; i<menu.length; i++ )
{
var item:DisplayObject = menu*
item.visible = true
Tweener.addTween(item, {alpha:0, y:0, time:1, transition:“easeOut” } );
}
}
_open = false;
}

function bOver( e:MouseEvent )
{
Tweener.addTween(e.target.bg, { _color:0x222222, time:2, transition:“easeOutExpo” } );
}

function bOut(e:MouseEvent):void
{
Tweener.addTween(e.target.bg, { _color:null, time:2, transition:“easeOutExpo” } );
}

function bClick(e:MouseEvent):void
{
if (off != null) {
off.buttonMode = true;
off.addEventListener(MouseEvent.ROLL_OUT, bOut);
off.addEventListener(MouseEvent.ROLL_OVER, bOver);
off.addEventListener(MouseEvent.CLICK, bClick);
off.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT));

    }
    e.target.buttonMode = false;
    e.target.removeEventListener(MouseEvent.ROLL_OUT, bOut);
    e.target.removeEventListener(MouseEvent.ROLL_OVER, bOver);
    e.target.removeEventListener(MouseEvent.CLICK, bClick);
    off = e.target;
}    

_addMenu();

So anyway everything seems to be working fine apart from the dispatchEvent snippet…

off.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT));

I want the menu to stay open after I click another button and only the roll over to change. I know i’ve got a ROLL_OUT listener to control the actual menu itself and this is where the issue is. Is there any other way of going about this? I’m new to AS3 and your help would be greatly appreciated. :slight_smile:

Cheers