I want to display a popup menu when the user clicks in a certain spot 
in application:

private function showContextMenu(e:MouseEvent):void {

  var menuData:Array = new Array();
  // populate menuData

  var itemMenu:Menu = Menu.createMenu(null, menuData, true);
  itemMenu.show(e.stageX, e.stageY);
}

This works fine.  However, if the user clicks close to the bottom or 
right margin of the application, the menu is cut off.

I'd like to do something like this:

private function showContextMenu(e:MouseEvent):void {

  var menuData:Array = new Array();
  // populate menuData

  var itemMenu:Menu = Menu.createMenu(null, menuData, true);
  // how to tell a Menu to measure its width and height before
  // displaying it?

  var x:Number = e.stageX;
  var y:Number = e.stageY;

  if (x + itemMenu.width > this.stage.width) {
    // show menu to the left of the cursor
    x -= itemMenu.width;
  }

  if (y + itemMenu.height > this.stage.height) {
    // show menu above the cursor
    y -= itemMenu.height;
  }

  itemMenu.show(x, y);
}

It appears that the width and height are 0 prior to calling show().  
Is there any way to measure the menu before drawing it?

Thanks,

Karl

Reply via email to