Thankyou all... I have a solution: Sadly, Menu implementation "controls" menu-out-of-bounds, with the code posted upper:
from mx.controls.Menu.show(... , ...) [CODE] // Adjust for menus that extend out of bounds if (this != getRootMenu()) { var shift:Number = x + width - screen.width; if (shift > 0) x = Math.max(x - shift, 0); } [/CODE] As you can see, This piece of code can only control the right edge of the screen... so it can result useless. Thanks to you, now, I use onShow event and callLater to play a custom animation. Here is my code: [CODE] //this function is called in the eventListener(onShow) private function processAfter(event: MenuEvent): void { //root menu is an exception in my schema. if (event.menu.parentMenu != null){ var current_menu: Menu = event.menu; var menu_height: int = current_menu.height; var menu_width: int = current_menu.width; /*system execute the show function before the menu can be in its correct place, I use these two lines to avoid menu can be visualized (perhaps, it is not necessary) */ current_menu.height = 0; current_menu.width = 0; this.callLater(this.moveSubmenu, [current_menu, menu_height, menu_width]); } } /*******************************************************************/ private function moveSubmenu(current_menu: Menu, menu_height: int, menu_width: int): void { var bottom_edge_menu: int = this.rootMenu.y+this.rootMenu.height; var submenu_edge: int = current_menu.y + menu_height; var pixels_upper: int = 0; if (limite_inferior_menu < limite_menu) { pixels_upper= (submenu_edge - bottom_edge_menu); } /*restoring menu height and width*/ current_menu.height = menu_height; current_menu.width = menu_width; var animate_menu: Sequence = new Sequence(); /* here comes animation sequence creation, using pixels_upper to move up current_menu.y position*/ animate_menu.play([current_menu]); } [/CODE] I will continue looking for new solutions for this problem. Thankyou very much for this help. J Pablo