【问题标题】:How to display a tooltip only if the mouse cursor is within certain coordinates?仅当鼠标光标在特定坐标内时如何显示工具提示?
【发布时间】:2011-02-24 06:35:19
【问题描述】:

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

                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);

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

【问题讨论】:

    标签: apache-flex actionscript


    【解决方案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);
    }
    

    希望这会有所帮助。

    【讨论】:

    • @[真北创意] 谢谢!我会试试这个。
    • 您是否正在尝试这样做:livedocs.adobe.com/flex/3/html/…
    • 您是否能够至少添加工具提示 - 只是不更新​​它们?
    • 我会将这两个(销毁和创建)分离为单独的函数。为了测试,设置一个类变量,如 _isTooltipCreated = false;首先,在鼠标退出时销毁工具提示 - 并设置 _isTooltipCreated = false;如果 _isTooltipCreated == false (在成功创建工具提示后也将其设置为 true),则鼠标悬停功能有条件地创建工具提示。可以尝试的东西。
    • 这可能对你有帮助:help.adobe.com/en_US/flex/using/…
    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2011-11-13
    • 2013-04-07
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多