在我的组件中,我正在绘制一些矩形,如下所示:
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);
如果我注释掉前一行,它将显示新的工具提示,但它将继续创建新的工具提示,旧的工具提示永远不会被删除。但是,如果我添加该行,它不会添加任何工具提示!代码是不是按顺序执行的,即代码是否在代码添加工具提示后以某种方式删除工具提示?
答案 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);
}
希望这有帮助。