首页 > 代码库 > flex中toolTip汇总 转

flex中toolTip汇总 转

1.toolTip换行符 

<mx:Button id="btn1" toolTip="在工具条提示中&#13; 使用换行符"/> 

2.设定工具条提示的样式 

[javascript] view plaincopy
  1. <mx:Style>    
  2.     ToolTip    
  3.     {    
  4.         fontSize:19;    
  5.         color:#FF6699;    
  6.     }    
  7. </mx:Style>    


3.设定工具提示宽度 

 

 

[javascript] view plaincopy
  1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">    
  2. <mx:Script>    
  3.     <![CDATA[    
  4.         import mx.controls.ToolTip;    
  5.         public function init():void    
  6.         {    
  7.             ToolTip.maxWidth=100;    
  8.         }    
  9.         ]]>    
  10. </mx:Script>    


4.使用工具条提示事件 
toolTipCrate 
toolTipEnd 
toolTipHide 
toolTipShow 
toolTipShown 
toolTipStart 

 

 

[javascript] view plaincopy
  1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">    
  2. <mx:Script>    
  3.     <![CDATA[    
  4.         import mx.events.ToolTipEvent;    
  5.         import flash.media.Sound;    
  6.         [Embed(source="demo.mp3")]    
  7.         private var beepSound:Class;    
  8.         private var myClip:Sound;    
  9.         public function init():void    
  10.         {    
  11.             TooTip.maxWidth=100;    
  12.         }    
  13.     
  14.         public function playSoune():void    
  15.         {    
  16.             myClip.play();    
  17.         }    
  18.     
  19.         public function myListener(event:ToolTipEvent):void    
  20.         {    
  21.             playSoune();    
  22.         }    
  23.             
  24.         public function init():void    
  25.         {    
  26.             lbl.addEventListener(ToolTipEvent.TOOL_TIP_SHOW,myListener);    
  27.             myClip=new beepSound();    
  28.         }    
  29.         ]]>    
  30. </mx:Script>    
  31. <mx:Label id="lbl" toolTip="demo ToolTip" text="mouse over here" />   


5.ToolTip Manager 
ToolTip Manager 类用来管理toolTip属性,包含在mx.managers包中 
使用ToolTip Manager 延迟工具条显示的时间,在工具条上使用行为效果 
建立动态的工具条提示,使用自定义的工具条提示 

公共属性 
    currentTarget : DisplayObject 
当前显示工具提示的 UIComponent;如果未显示工具提示,则为 null。 ToolTipManager 
    currentToolTip : IToolTip 
当前可见的 ToolTip 对象;如果未显示 ToolTip 对象,则为 null。 ToolTipManager 
    enabled : Boolean 
如果为 true,则当用户将鼠标指针移至组件上方时,ToolTipManager 会自动显示工具提示。 ToolTipManager 
    hideDelay : Number 
自工具提示出现时起,Flex 要隐藏此提示前所需等待的时间量(以毫秒为单位)。 ToolTipManager 
    hideEffect : IAbstractEffect 
隐藏工具提示时播放的效果;如果工具提示在消失时不应显示任何效果,则为 null。 ToolTipManager 
   prototype : Object 
对类或函数对象的原型对象的引用。 Object 
    scrubDelay : Number 
在 Flex 再次等待 showDelay 持续显示工具提示之前,用户在各控件间移动鼠标时可以花费的时间(以毫秒为单位)。 ToolTipManager 
    showDelay : Number 
当用户将鼠标移至具有工具提示的组件上方时,Flex 等待 ToolTip 框出现所需的时间(以毫秒为单位)。 ToolTipManager 
    showEffect : IAbstractEffect 
显示工具提示时播放的效果;如果工具提示在显示时不应显示任何效果,则为 null。 ToolTipManager 
    toolTipClass : Class 
创建工具提示要用到的类。 

 

 

 

1.控制工具条的显示隐藏 
ToolTip Manager  enabled属性来定义工具条提示状态,默认为true,设定为false就表示禁用 
2.延迟工具条的提示时间 
showDelay 默认为500毫秒 当鼠标在控件之间移动时,flex等待显示工具条提示的时间长度 
hideDelay 默认值为10000毫秒 如果设定hideDelay属性值为0,flex不显示工具条提示,如果设定为Infinity,flex则一致显示工具提示 
直到下一个动作,或者鼠标离开主键 
例如: 
ToolTipManager.showDelay=0;//立即显示 
ToolTipManager.hideDelay=3000;//3s秒后隐藏 
3.在工具条上使用动画效果 

 

[javascript] view plaincopy
  1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">    
  2. <mx:Script>    
  3.     <![CDATA[    
  4.         import mx.managers.ToolTipManager;    
  5.         import mx.events.ToolTipEvent;    
  6.         import flash.media.Sound;    
  7.         [Embed(source="demo.mp3")]    
  8.         private var beepSound:Class;    
  9.         private var myClip:Sound;    
  10.         public function init():void    
  11.         {    
  12.             TooTip.maxWidth=100;    
  13.             ToolTipManager.showEffect=fadeIn;    
  14.         }    
  15.         ]]>    
  16. </mx:Script>    
  17. <mx:Label id="lbl" toolTip="demo ToolTip" text="mouse over here" />    
  18. <mx:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="1000" />    
  19. <mx:Panel >    
  20.     <mx:Button id="btn" toolTip="demoasdf" />    
  21. </mx:Panel >    


4.建立动态工具条体提示 
ToolTipManager有两种方法,即:createToolTip()和destroyToolTip() 
建立一个工具条提示对象时,可以定义其属性,样式,事件和效果。 
crateToolTip()方法结构 
createToolTip(text:String, x:Number, y:Number, errorTipBorderStyle:String = null, context:IUIComponent = null):IToolTip 
[] 使用指定的文本创建 ToolTip 类的实例,然后在舞台坐标中的指定位置显示此实例。 ToolTipManager 
    destroyToolTip(toolTip:IToolTip):void 
[] 销毁由 createToolTip() 方法创建的指定 ToolTip。 
例如: 
<mx:Label id="lbl" toolTip="demo ToolTip" text="mouse over here" /> 
<mx:Button id="btn1" toolTip="填写的是{lbl.text}"/> 

5.建立用户自定义的工具条提示 

 

 

  1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >  
  2. <mx:Script>  
  3.     <![CDATA[  
  4.         import mx.managers.ToolTipManager;  
  5.         import mx.events.ToolTip;  
  6.         public var myTip:ToolTip;  
  7.   
  8.         public function init():void  
  9.         {  
  10.             var s:String ="保存,应用,退出";  
  11.             myTip=ToolTipManager.createToolTip(s,10,10) as ToolTip;  
  12.             myTip.setStyle("backgroundColor",0xFFCC00);  
  13.             myTip.width=300;  
  14.             myTip.height=40;  
  15.         }  
  16.   
  17.         public funciton destroyBigTip():void  
  18.         {  
  19.             ToolTipManager.destroyToolTip(myTip);  
  20.         }  
  21.         ]]>  
  22. </mx:Script>  
  23.     <mx:Button id="btn" toolTip="test toolTip" rollOver="init()" rollOut="destroyBigTip()"/>  

6.使用错误信息提示工具条 

As代码  收藏代码
  1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >  
  2. <mx:Script>  
  3.     <![CDATA[  
  4.         import mx.managers.ToolTipManager;  
  5.         import mx.events.ToolTip;  
  6.         public var errorTip:ToolTip;  
  7.     private function validatefun(type:String,event:Object):void  
  8.     {  
  9.         errorTip=" demo test ";  
  10.         errorTip=ToolTipManager.createToolTip(errorTip,event.currentTarget.x,event.currentTarget.y) as ToolTip;  
  11.         errorTip.setStyle("styleName","errorTip");  
  12.     }  
  13. <mx:TextInput id="txt" enter="validatefun(‘demo‘,event)" />  



7.重写工具条皮肤 
ToolTip皮肤存在mx.skins.ToolTipBorder.as文件中 
当然需要重写的时候就可以 ToolTipBorder 类继承的类就可以了 
例如: 

Java代码  收藏代码
  1. package  
  2. {  
  3.     import mx.skins.RectangularBorder;  
  4.   
  5.     public class MyToolTipBorder extends RectangularBorder  
  6.     {  
  7.         public function MyToolTipBorder()  
  8.         {  
  9.             super();  
  10.         }  
  11.           
  12.         override protected function updateDisplayList(unscaledWidth:Number,  
  13.                                                   unscaledHeight:Number):void  
  14.         {  
  15.               
  16.         }  
  17.           
  18.          override   public function layoutBackgroundImage():void {  
  19.                   
  20.             }  
  21.     }  
  22. }mxml中使用  
  23. <mx:Style>  
  24.     ToolTip  
  25.     {  
  26.         borderSkin:ClassReference("MyToolTipBorder");  
  27.     }  
  28. </mx:Style>  



自定义皮肤 参见:http://demojava.iteye.com/blog/1175446 
自定义DateGird Item ToolTip 
效果图: 
 
自定义ToolTip 

renderers.MenuToolTipRenderer as 实现接口   IMenuItemRenderer, IDataRenderer, IListItemRenderer 

Xml代码  收藏代码
  1. package renderers  
  2. {  
  3. import flash.events.Event;  
  4. import flash.events.MouseEvent;  
  5. import flash.text.TextFieldAutoSize;  
  6.   
  7. import mx.controls.Alert;  
  8. import mx.controls.LinkButton;  
  9. import mx.controls.Menu;  
  10. import mx.controls.listClasses.IListItemRenderer;  
  11. import mx.controls.menuClasses.IMenuItemRenderer;  
  12. import mx.core.EdgeMetrics;  
  13. import mx.core.IDataRenderer;  
  14. import mx.core.UIComponent;  
  15. import mx.core.UITextField;  
  16. import mx.events.FlexEvent;  
  17.   
  18.   
  19. public class MenuToolTipRenderer extends UIComponent implements IMenuItemRenderer, IDataRenderer, IListItemRenderer  
  20. {  
  21.       
  22.   
  23.     private var textField:UITextField;  
  24.     private var clickText:LinkButton;  
  25.     public function get measuredTypeIconWidth():Number//类型图标(单选/复选)的宽度   
  26.     {  
  27.         return 33;  
  28.     }  
  29.     public function get measuredBranchIconWidth():Number//分支图标的宽度   
  30.     {  
  31.         return 33;  
  32.     }  
  33.     public function get measuredIconWidth():Number//图标的宽度  
  34.     {  
  35.         return 33;  
  36.     }  
  37.   
  38.       
  39.     //-------------------------------------------------------------------------  
  40.       
  41.     public function MenuToolTipRenderer()  
  42.     {  
  43.         super();  
  44.         this.addEventListener(FlexEvent.DATA_CHANGE, renderComponent);  
  45.         this.setStyle("cornerRadius", 5);  
  46.         this.maxWidth = 250;  
  47.   
  48.     }  
  49.       
  50.     //-------------------------------------------------------------------------  
  51.       
  52.     // Internal variable for the property value.  
  53.     private var _menu:Menu;  
  54.   
  55.     public function get menu():Menu  
  56.     {  
  57.         return _menu;  
  58.     }  
  59.   
  60.     public function set menu(value:Menu):void  
  61.     {  
  62.         _menu = value;  
  63.     }  
  64.       
  65.     //-------------------------------------------------------------------------  
  66.       
  67.   
  68.     private var _data:Object;  
  69.       
  70.   
  71.     [Bindable("dataChange")]  
  72.     public function get data():Object {  
  73.     return _data;  
  74.     }  
  75.   
  76.     public function set data(value:Object):void {  
  77.     _data = value;  
  78.       
  79.     dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));  
  80.     }  
  81.       
  82.     //-------------------------------------------------------------------------  
  83.       
  84.     private function get borderMetrics():EdgeMetrics  
  85.     {  
  86.         return EdgeMetrics.EMPTY;  
  87.     }  
  88.       
  89.     //-------------------------------------------------------------------------  
  90.       
  91.     private function renderComponent(event:FlexEvent):void  
  92.     {  
  93.         if(_data != null && _data != "null")  
  94.         {  
  95.             textField.htmlText = data.label;  
  96.             invalidateProperties();  
  97.             invalidateSize();  
  98.             invalidateDisplayList();  
  99.               
  100.         }  
  101.     }  
  102.       
  103.     //-------------------------------------------------------------------------  
  104.       
  105.     private function buttonClick(event:Event):void  
  106.     {  
  107.         mx.controls.Alert.show("button click");  
  108.     }  
  109.       
  110.     //-------------------------------------------------------------------------  
  111.       
  112.     override protected function createChildren():void  
  113.     {  
  114.         super.createChildren();  
  115.   
  116.         // Create the TextField that displays the tooltip text.  
  117.         if (!textField)  
  118.         {  
  119.             textField = new UITextField();  
  120.             textField.autoSize = TextFieldAutoSize.LEFT;  
  121.             textField.mouseEnabled = false;  
  122.             textField.multiline = true;  
  123.             textField.selectable = false;  
  124.             textField.wordWrap = true;  
  125.             textField.styleName = this;  
  126.             addChild(textField);      
  127.         }  
  128.     }  
  129.       
  130.     //-------------------------------------------------------------------------  
  131.       
  132.       
  133.     override protected function measure():void  
  134.     {  
  135.         super.measure();  
  136.   
  137.         var bm:EdgeMetrics = borderMetrics;  
  138.   
  139.         var leftInset:Number = bm.left + getStyle("paddingLeft");  
  140.         var topInset:Number = bm.top + getStyle("paddingTop");  
  141.         var rightInset:Number = bm.right + getStyle("paddingRight");  
  142.         var bottomInset:Number = bm.bottom + getStyle("paddingBottom");  
  143.   
  144.         var widthSlop:Number = leftInset + rightInset;  
  145.         var heightSlop:Number = topInset + bottomInset;  
  146.   
  147.         textField.wordWrap = false;  
  148.   
  149.         if (textField.textWidth + widthSlop > this.maxWidth)  
  150.         {  
  151.             textField.width = this.maxWidth - widthSlop;  
  152.             textField.wordWrap = true;  
  153.         }  
  154.   
  155.         measuredWidth = textField.width + widthSlop;  
  156.         measuredHeight = textField.height + heightSlop;  
  157.           
  158.         thisthis.parent.parent.height = this.parent.height = this.height = measuredHeight + 25;  
  159.         thisthis.parent.parent.width = this.parent.width = this.width = measuredWidth;  
  160.           
  161.         createAdditionalContent(measuredWidth, measuredHeight);  
  162.     }  
  163.       
  164.     private function createAdditionalContent(measuredWidth:Number, measuredHeight:Number):void  
  165.     {  
  166.         clickText = new LinkButton();  
  167.         clickText.label = "More Info";  
  168.         clickText.width = 70;  
  169.         clickText.height = 18;  
  170.         clickText.setStyle("fontSize", 9);  
  171.         clickText.setStyle("color", "blue");  
  172.         clickText.buttonMode = true;  
  173.         clickText.visible = true;  
  174.         clickText.y = measuredHeight;  
  175.         clickText.x = measuredWidth - clickText.width - 8;  
  176.           
  177.         clickText.addEventListener(MouseEvent.CLICK, dispatchClick);  
  178.   
  179.         addChild(clickText);  
  180.     }  
  181.       
  182.     private function dispatchClick(e:Event):void  
  183.     {  
  184.         this.dispatchEvent(new Event("buttonClicked", true))  
  185.     }  
  186. }  
  187. }  



Application.xml 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"   
  3.             viewSourceURL="srcview/index.html" width="600" height="300">  
  4.   
  5. <mx:DataGrid id="dg" dataProvider="{tmpArray}" width="550"  
  6.              mouseOut="dgMouseOut(event)" mouseOver="dgMouseOver(event)" mouseMove="dgMouseMove(event)">  
  7.     <mx:columns>  
  8.         <mx:Array>  
  9.             <mx:DataGridColumn headerText="Label" dataField="label" showDataTips="true" />  
  10.             <mx:DataGridColumn headerText="Data" dataField="data" />  
  11.         </mx:Array>  
  12.     </mx:columns>  
  13. </mx:DataGrid>  
  14.   
  15. <mx:Style>  
  16.       
  17.     .menuToolTip {  
  18.            backgroundAlpha: 1;  
  19.            backgroundColor: #ffffcc;  
  20.            useRollOver: false;  
  21.            borderStyle: solid;  
  22.            borderThickness: 0;  
  23.            borderColor: #000000;  
  24.            selectionColor: #7fcdfe;  
  25.            dropShadowEnabled: true;  
  26.            cornerRadius: 5;  
  27.            paddingLeft: 3; paddingRight: 3; paddingTop: 3; paddingBottom: 3;  
  28.              
  29.         }  
  30.       
  31. </mx:Style>  
  32.   
  33. <mx:Script>  
  34.     <![CDATA[ 
  35.         import mx.automation.delegates.controls.ListBaseContentHolderAutomationImpl; 
  36.         import mx.controls.listClasses.ListBase; 
  37.         import renderers.MenuToolTipRenderer; 
  38.         import mx.controls.dataGridClasses.DataGridItemRenderer; 
  39.          
  40.         import mx.managers.ToolTipManager; 
  41.         import mx.controls.Menu; 
  42.         import mx.events.MenuEvent; 
  43.         import flash.geom.Point; 
  44.          
  45.         [Bindable] private var dgMouseX:Number = 0; 
  46.         [Bindable] private var dgMouseY:Number = 0; 
  47.          
  48.         private var toolTipMenu:Menu; 
  49.         private var toolTipTimer:Timer; 
  50.          
  51.         [Bindable] 
  52.         public var tmpArray:Array = [{label: ‘<b>mary</b> had a little lamb‘, data: 55, link:‘http://www.meutzner.com/blog‘},  
  53.                                      {label: ‘All the kings men, and all the kings horses‘, data: 56, link:‘http://www.meutzner.com/blog‘},  
  54.                                      {label: ‘baa baa black sheep, have you any wool‘, data: 57, link:‘http://www.meutzner.com/blog‘},  
  55.                                      {label: ‘jack and jill went up the hill‘, data: 58, link:‘http://www.meutzner.com/blog‘},  
  56.                                      {label: ‘little miss muffet, sat on a tuffet, eating her curds and whey‘, data: 59, link:‘http://www.meutzner.com/blog‘} 
  57.                                     ]; 
  58.          
  59.         //------------------------------------------------------------------------- 
  60.          
  61.         public function init():void 
  62.         { 
  63.             ToolTipManager.enabled = false; 
  64.         } 
  65.          
  66.         //------------------------------------------------------------------------- 
  67.          
  68.         private function createMenu(data:Object):void  
  69.     { 
  70.     toolTipTimer.stop(); 
  71.     var menuData:Array = [{label: data.label, link: data.link}]; 
  72.      
  73.      
  74.      
  75.     toolTipMenu = Menu.createMenu(this, menuData, false); 
  76.     toolTipMenu.labelField="label"; 
  77.     toolTipMenu.width = 250; 
  78.     toolTipMenu.setStyle("fontSize", 10); 
  79.     toolTipMenu.setStyle("themeColor", 0xFF9900); 
  80.     toolTipMenu.itemRenderer = new ClassFactory(renderers.MenuToolTipRenderer); 
  81.     toolTipMenu.data = data; 
  82.     toolTipMenu.selectable = false; 
  83.     toolTipMenu.setStyle("styleName", "menuToolTip"); 
  84.     toolTipMenu.setStyle("openDuration", 0); 
  85.  
  86.     //toolTipMenu.setStyle("selectionEasingFunction", myEasingFunction); 
  87.     toolTipMenu.addEventListener(MouseEvent.ROLL_OUT, hideToolTip); 
  88.     toolTipMenu.addEventListener("buttonClicked", catchButtonClick); 
  89.      
  90.     var pt1:Point = new Point(this.dgMouseX, this.dgMouseY); 
  91.             pt1 = dg.localToGlobal(pt1); 
  92.             //offset this for now to fix slight bug where immediate mouseover of tooltip causes it to hide 
  93.     toolTipMenu.show(pt1.x+10, pt1.y+0); 
  94.      
  95.     } 
  96.      
  97.     //------------------------------------------------------------------------- 
  98.      
  99.     private function hideToolTip(event:MouseEvent):void 
  100.     { 
  101.     //trace("MENU --- " + event.relatedObject + " - " + event.target + " - " + event.currentTarget); 
  102.     toolTipMenu.hide(); 
  103.     } 
  104.      
  105.     //------------------------------------------------------------------------- 
  106.      
  107.     private function dgMouseMove(event:MouseEvent):void 
  108.     { 
  109.     this.dgMouseX = dg.mouseX; 
  110.     this.dgMouseY = dg.mouseY; 
  111.     } 
  112.      
  113.      
  114.     //------------------------------------------------------------------------- 
  115.      
  116.     private function dgMouseOver(event:MouseEvent):void 
  117.     { 
  118.     this.dgMouseX = dg.mouseX; 
  119.     this.dgMouseY = dg.mouseY; 
  120.     //trace("DATAGRID OVER --- " + event.target + " - " + event.currentTarget + " - " + event.relatedObject); 
  121.     if(event.target is DataGridItemRenderer) 
  122.     { 
  123.         if(toolTipMenu != null) 
  124.         { 
  125.             if(toolTipMenu.visible && toolTipMenu.data == event.target.data)  
  126.                 return; 
  127.         } 
  128.         if(!DataGridItemRenderer(event.target).styleName.showDataTips) 
  129.             return; 
  130.              
  131.         toolTipTimer = new Timer(1000, 0); 
  132.         toolTipTimer.addEventListener(TimerEvent.TIMER, function():void  
  133.                                                                  {  
  134.                                                                     createMenu(event.target.data); 
  135.                                                                  }  
  136.                                       ); 
  137.         toolTipTimer.start(); 
  138.     } 
  139.     } 
  140.      
  141.     //------------------------------------------------------------------------- 
  142.      
  143.     private function dgMouseOut(event:MouseEvent):void 
  144.     { 
  145.     if(toolTipTimer) toolTipTimer.stop(); 
  146.     //trace("DATAGRID OUT --- " + event.target + " - " + event.currentTarget + " - " + event.relatedObject); 
  147.     if(event.relatedObject is mx.controls.listClasses.ListBaseContentHolder || event.relatedObject is MenuToolTipRenderer) 
  148.     { 
  149.         return; 
  150.     } 
  151.     if(event.target is DataGridItemRenderer) 
  152.     { 
  153.         if(event.relatedObject is Menu || !event.relatedObject is MenuToolTipRenderer) return; 
  154.         if(toolTipMenu != null) toolTipMenu.hide(); 
  155.         } 
  156.     } 
  157.      
  158.     //------------------------------------------------------------------------- 
  159.      
  160.     private function catchButtonClick(e:Event):void  
  161.         { 
  162.     mx.controls.Alert.show(e.target.data.label + " was clicked to take you to " + e.target.data.link); 
  163.     } 
  164.  
  165.          
  166.     ]]>  
  167. </mx:Script>  
  168.   
  169. </mx:Application>  



附件为源文件 


1. 设置ToolTip风格(通过css来设置) 
   ToolTip {  
    fontFamily: "Arial";  
    fontSize: 13;  
    fontStyle: "italic";  
    color: #FF6699;  
    backgroundColor: #33CC99;  

当然这个可以通过css来动态设置例如: 
StyleManager.getStyleDeclaration("ToolTip").setStyle("fontStyle","italic");  
2. 错误提示errotTip 
 
errorTip 

border-style:"errorTipRight"; 

其中border-style其对应的格式决定小三角的方位,可选值:[toolTip,errorTipRight,errorTipAbove,errorTipBelow] 
<mx:TextInput x="85" y="118" text="021-阿萨德发送" errorString="输入有误!" /> 
如果想修改源码,改变小三角的大小或者位置的话就需要自定义border-skin 
ToolTip 

border-skin:ClassReference("com.MyToolTipBorder"); 

其中 com.MyToolTipBorder其中是一个继承了RectangularBorder的类,源码参见附件, ToolTip默认的skin-class路径在sdk 
sdks\3.0.0\frameworks\projects\framework\src\mx\skins\halo\ToolTipBorder 
引入包的路径:import mx.skins.halo.ToolTipBorder; 
笔者发现 ToolTipBorder 的类对于4个方向支持不是很好,其中最右边的提示,也就是小三角在右边的没有,把源码修改了下(附件中有MyToolTipBorder) 
改变默认的错误提示的背景色设置4个方向的提示 

 

 

 

 

3. 使用ToolTipManager动态创建自定义的tooltip; 
使用ToolTipManager管理器类能够让你设置基本的ToolTip功能。比如显示延迟,以及控制是否显示ToolTip信息内容。 
你可以在程序中激活和停止使用ToolTips. 
可以使用enabled这个属性来激活或者停止使用ToolTips,如果停止使用,在鼠标移到到组件上方的时候就不会用ToolTips的框显示出来,不管那个组件是否设置了toolTip这个属性值 
设置ToolTipManager的常用属性介绍 
ToolTipManager.enabled = true;//鼠标移入控件自动显示工具提示 
ToolTipManager.showDelay = 0; //flex 等待tooltip出现的时间单位毫秒默认500 
ToolTipManager. hideDelay=3000; //flex 隐藏tooltip所需的事件等待量 单位毫秒,默认500 
ToolTipManager.showEffect= fadeIn; //显示tooltip的特效 
ToolTipManager. hideEffect= fadeIn; //隐藏 tooltip的特效 
<mx:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="1000"/> 
4. 使用ToolTipManager createToolTip,destroyToolTip来动态创建自定义tooltip 
一般自定义tooltip都是在控件的 
MouseEvent. ROLL_OVER(rollOver) 
MouseEvent. MOUSE_OVER (mouseOver) 
控制自定义tooltip的显示 
MouseEvent. ROLL_OUT (rollOut) 
MouseEvent. MOUSE_OUT (mouseOut) 
控制自定义tooltip的隐藏 
现已rollOver结合ToolTipManager实现自定义tooltip 

Xml代码  收藏代码
  1. <mx:Script>  
  2.     <![CDATA[ 
  3. import mx.managers.ToolTipManager; 
  4. public var myTip:ToolTip; 
  5. private function showTip(event:MouseEvent,type:String):void 
  6. Tip=ToolTipManager.createToolTip(str,event.stageX,event.stageY) as ToolTip; 
  7. //根据需要动态设置tooltip的style属性 
  8. myTip.move(event.stageX,event.stageY); 
  9. private function hideTip():void 
  10.     { 
  11.         ToolTipManager.destroyToolTip(myTip); 
  12.     } 
  13.     ]]>  
  14. </mx:Script>  


5. 实现mx.core.IToolTip接口自定义toolTip的外观(可选as实现该接口,mxml实现该接口) 
现已mxml实现该接口为例(简单), MyPanelToolTip.mxml 

Xml代码  收藏代码
  1. <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"    
  2.     implements="mx.core.IToolTip"    
  3.     width="212"    
  4.     borderThickness="2"    
  5.    backgroundColor="0xCCCCCC"    
  6.    dropShadowEnabled="true"    
  7.    borderColor="black"    
  8.    roundedBottomCorners="true"  
  9.     height="90">     
  10.    <mx:Script>  
  11.    <![CDATA[   
  12.    //注意 Panel 中的  implements="mx.core.IToolTip"   
  13.    [Bindable]    
  14.    private var _text:String="";   
  15.    public function get text():String {   
  16.    return _text ; 
  17.    }   
  18.    public function set text(value:String):void { 
  19.         this._text=value;   
  20.    }   
  21.    ]]></mx:Script>    
  22.    <mx:Text text="{text}" percentWidth="100"/>    
  23.    </mx:Panel>  


使用时: 
private function createCustomTip(title:String, body:String, event:ToolTipEvent):void 

var pan:MyPanelToolTip = new MyPanelToolTip(); 
           pan.title = title; 
           pan.text=body; 
           event.toolTip = pan; 

<mx:Button id="btn3" label="button" x="275.5" toolTip="demo" toolTipCreate="createCustomTip(‘自定义tooltip‘,‘该tooltip实现mx.core.IToolTip接口,注意是控件必须设置toolTip属性的值‘,event)" y="187"/> 
6. 自定义组件(继承UIComponent)结合mouseover事件形式   
效果图: 

 

 

http://blog.csdn.net/xingfeng0501/article/details/7341148