Strange onRollOut behavior

I’ll post more code as necessary, but I’ve a feeling this is something basic that I’m missing:


curr_menu.onRollOut = function() {
        trace("rollout");
        trace(this);
        this.removeMovieClip();
    };

I have a menu generator on my webpage. It consists of two main bits of code: a Main menu which populates a horizontal menu with headings from an XML file, and a subMenu function which populates the drop down menu items from each heading.

In ASCII, rolling over a MENU item would create a drop-down like this:


MENU
submenu1
submenu2
submenu3

I want the submenu container to destroy itself when the user moves his cursor outside the submenu area. For the most part it works, with one snag: if I roll out of the submenu left, right, or down, the submenu destroys itself. Good. But if I roll UP out of the submenu, the trace statement runs (“rollout”), but the menu remains there.

To illustrate. If I roll from submenu1 to the left, the submenus close and disappear, as I want them to. Same if I roll from submenu3 down, or from submenu2 to the right. However, if I roll from submenu1 up to MENU and continue rolling in that direction, all the way up the background, the submenus stay displayed, even though the trace tells me the event handler is registering a RollOut event.

Any suggestions? Is my explanation clear?