Не уверен, что вы нашли решение для этого, но есть более простой подход. Этот код подключается к событию showtip-show во время фазы захвата (до его отображения), чтобы масштабировать и позиционировать его соответствующим образом в соответствии с масштабом содержащего элемента - в «этом» случае, в документе parentApplication
. Он также включает немного кода, который, в моем случае, помог предотвратить смещение всплывающих подсказок со сцены при масштабировании (поэтому вам могут понадобиться только первые несколько строк - t.scaleX
и t.scaleY
):
import mx.events.ToolTipEvent;
addEventListener(ToolTipEvent.TOOL_TIP_SHOW, handleToolTipShow, true, 0, true);
private function handleToolTipShow(event:ToolTipEvent):void
{
if (event && event.toolTip)
{
var t:IToolTip = event.toolTip;
// Scale the tip itself
t.scaleX = this.scaleX;
t.scaleY = this.scaleY;
// Scale the offsets
var xOffset:int = 10 * this.scaleX;
var yOffset:int = 10 * this.scaleY;
// Set the default positioning
t.x = parent.mouseX + xOffset;
t.y = parent.mouseY + yOffset;
// Set the adjusted height and width
var th:Number = t.height * this.scaleX;
var tw:Number = t.width * this.scaleY;
var rightEdge:int = t.x + tw + xOffset;
var playerRightEdge:int = parent.width;
var bottomEdge:int = t.y + th + yOffset;
var playerBottomEdge:int = parent.height;
// Offscreen right
if (rightEdge > playerRightEdge)
{
t.move(parent.mouseX - xOffset - tw, parent.mouseY + yOffset);
}
// Offscreen bottom
if (bottomEdge > playerBottomEdge)
{
t.move(parent.mouseX + xOffset, parent.mouseY - yOffset - th);
}
}
}