Как отобразить всплывающую подсказку, только если курсор мыши находится в определенных координатах? - PullRequest
0 голосов
/ 24 февраля 2011

Внутри моего компонента я рисую несколько прямоугольников, как показано ниже:

                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 Ответ

1 голос
/ 24 февраля 2011

Предполагая, что вы добавляете на сцену, называется «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);
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...