仅当鼠标光标位于特定坐标内时,如何显示工具提示?

时间:2011-02-24 06:35:19

标签: flex actionscript

在我的组件中,我正在绘制一些矩形,如下所示:

                var objGraphics:Graphics=graphics;
                objGraphics.drawRect(start, end, total, 5);
                objGraphics.endFill();

当鼠标光标悬停在每个矩形上时,我需要显示一个自定义工具提示。

我该怎么做?我正在使用MouseMove事件来跟踪光标在这些坐标上移动的时间(该部分正在工作),但是当我更改工具提示文本时,它不会刷新。

private function this_MOUSE_MOVE(event:MouseEvent):void
        {
//...some code to check the coordinates to find out which rectangle the cursor 
//is over   
        //current tooltip is "Rectangle A";
        ToolTipManager.destroyToolTip(_myToolTip);
        var localPoint:Point=new Point(event.localX, event.localY);
        var globalPoint:Point=new Point(localToGlobal(localPoint).x, 
    localToGlobal(localPoint).y);
        //cursor is over Rectangle B, so changing the tooltip;
        _myToolTip=ToolTipManager.createToolTip("Rectangle B", 
    globalPoint.x, globalPoint.y) as ToolTip;
        callLater(addChild, [_myToolTip]);
}

感谢您的帮助。

编辑:问题似乎与以下一行有关:

ToolTipManager.destroyToolTip(_myToolTip);

如果我注释掉前一行,它将显示新的工具提示,但它将继续创建新的工具提示,旧的工具提示永远不会被删除。但是,如果我添加该行,它不会添加任何工具提示!代码是不是按顺序执行的,即代码是否在代码添加工具提示后以某种方式删除工具提示?

1 个答案:

答案 0 :(得分:1)

假设你要添加到舞台上的是“myShape”,你可以这样做:

// in your class...
private var var tooltip:Tooltip;  // Or whatever your tooltip is

myShape.addEventListener(MouseEvent.MOUSE_OVER, handleOver);
myShape.addEventListener(MouseEvent.MOUSE_OUT, handleOut);

private function handleOver(evt:MouseEvent):void
{
    // Show here
    // OR
    // tooltip = new Tooltip();
    // addChild(tooltip);

}

private function handleOut(evt:MouseEvent):void
{
    // Hide here
    // OR
    // removeChild(tooltip);
}

希望这有帮助。