2010-12-20 91 views
0

我创建了一个当用户将鼠标悬停在图像上时显示的错误提示。我希望弹出窗口出现在图像的左侧,但是我可以通过创建工具提示的唯一属性是“errorTipRight”,“errorTipAbove”和“errorTipBelow”。有没有办法在目标左边显示errorTip(error ToolTip)?

有什么想法?

示例代码:

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.controls.ToolTip; 
      import mx.managers.ToolTipManager; 
      [Embed(source="assets/some_image.png")] 
      [Bindable] 
      private var myIcon:Class; 

      private var myToolTip:ToolTip; 

      private function showToolTip(evt:MouseEvent, text:String):void 
      { 
       var pt:Point = new Point(evt.currentTarget.x, evt.currentTarget.y); 
       pt = evt.currentTarget.parent.contentToGlobal(pt); 

       // I WANT TO POP THE ERRORTIP UP TO THE LEFT HERE INSTEAD OF ABOVE. 
       myToolTip = ToolTipManager.createToolTip(text, pt.x, pt.y, "errorTipAbove") as ToolTip; 
       var yOffset:int = myToolTip.height + 5; 
       myToolTip.y -= yOffset; 
      } 

      // Remove the tooltip 
      private function killToolTip():void 
      { 
       ToolTipManager.destroyToolTip(myToolTip); 
      } 
     ]]> 
    </fx:Script> 
    <mx:Image source="{myIcon}" mouseOver="showToolTip(event, 'My ToolTip Message Goes Here')" mouseOut="killToolTip()" /> 
</mx:HBox> 

回答

1

您需要为ToolTipBorder类创建一个替代品,并将其指定为您的工具提示的外观。我会通过复制ToolTipBorder源并修改updateDisplayList和borderMetrics方法来为这些方法中的switch语句添加一个新的“errorTipLeft”风格。然后将该外观类分配给CSS中的ToolTip类。希望有所帮助。

+0

我会给你一个镜头,让你知道它是怎么回事。感谢韦德! – 2010-12-28 19:15:22

0

你为什么不能减去从pt.x工具提示的宽度,当你给的坐标时,ToolTipManager?

myToolTip = ToolTipManager.createToolTip(text, (pt.x - somewidth), pt.y, "errorTipAbove") as ToolTip; 
+0

工具提示的位置不是问题。问题在于绘制工具提示的箭头部分。如果选择“errorTipAbove”,它将在工具提示底部绘制箭头,以便它在触发工具提示的源控件处指向下方。我希望在工具提示的右侧绘制箭头指向我的图像。 – 2010-12-20 21:36:43

相关问题