Hi Alex, I think that will not work either. If i click on the same button, first the MENU_HIDE will be called then the click listener will be called. If i change the flag on MENU_HIDE, the click listener will again show the menu. Let me show you the code i used:
private function displayMenu(event:MouseEvent):void { if(!menu) { menu= Menu.createMenu(this,settingsMenuData); menu.addEventListener(MenuEvent.MENU_HIDE, onMenuHide); } if(!isMenuShowing) { menu.show(event.currentTarget.x, event.currentTarget.y); } } private function onMenuHide(event:MenuEvent):void { isMenuShowing = false; } did i miss something? --- In flexcoders@yahoogroups.com, Alex Harui <[EMAIL PROTECTED]> wrote: > > Usually you don't need a "hide" phase to the button. Once shown, clicking anywhere will hide it. Only set the flag to false on MENU_HIDE. > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of prashant194 > Sent: Sunday, November 30, 2008 2:08 AM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] problem implementing show/hide menu on button click > > > Hello all, > > I want to show and hide menu on button click. If one a click of a > button, the menu is shown, then on another click of the same button, > the menu should be hidden. I used a flag to implement this but got in > to a problem. The code snippet is shown below: > > private var showMenu:Boolean = true; > private var menu:Menu; > > //event listener for button to show menu > private function displayMenu(event:MouseEvent):void { > if(!menu){ > menu.createMenu(this,menuData); > > } > > if(showmenu) { > menu.show(event.currentTarget.x - 75, event.currentTarget.y + > event.currentTarget.height + 2); > showMenu = false; > }else { > menu.hide(); > showMenu = true; > } > } > > i used a flag to show and hide menu on button click. works fine while > clicking on the button. But as we click on outside the button, the > menu gets hidden but the flag is still false. Now i have to click the > same button twice to make menu appear. > > I tried to add a listener for MenuEvent.MENU_HIDE and set the falg to > true on the listener. Doing so i ran into another problem. Whenever i > click on the same button after the menu is shown, the listener is > called first which will set the showMenu flag to true. So now the menu > will always be shown on clicking the button to show the menu. > > Hope i was able to make myself clear. > > Any idea on how to implement show/hide menu on button click. >