升级到Flex 3.4并尝试破解3.5 PopupManager.centerPopup?

时间:2010-01-14 15:40:30

标签: flex

如何将弹出窗口置于Flex 3.4 +中心?

在Flex 3.1中,我可以通过在createPopup中设置其父级,然后使用centerPopup将弹出窗口置于其父级之上。在Flex 3.4和3.5中,窗口的左上角与其父级的左上角相匹配......即使在centerPopup之后也是如此。

有解决方法吗?或者我没有按预期使用centerPopup?

1 个答案:

答案 0 :(得分:0)

现在,我正在使用以下函数,插入到我的静态WindowUtils类中:

  // work-around for broken PopupManger.centerPopup in Flex 3.4 and 3.5
  public static function centerPopup(popup: UIComponent, centerOn: UIComponent): void
  {
     var pt:Point = new Point(0, 0);
     pt = centerOn.localToGlobal(pt); // Convert local 0,0 into global coordinate
     pt = popup.globalToLocal(pt); // Convert the result into local coordinate of myPop
     popup.move(Math.round((centerOn.width - popup.width) / 2) + pt.x,
      Math.round((centerOn.height - popup.height) / 2) + pt.y);
  }