加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex ToolTip汇总

发布时间:2020-12-15 04:52:57 所属栏目:百科 来源:网络整理
导读:flex ToolTip汇总 博客分类: Flex Flex ??? flex ToolTip 1.toolTip换行符 mx:Button id="btn1" toolTip="在工具条提示中#13; 使用换行符"/ 2.设定工具条提示的样式 As代码 mx:Style? ??? ToolTip? ??? {? ??????? fontSize: 19 ;? ??????? color:#FF6699;?
flex ToolTip汇总
    博客分类:
  • Flex
Flex
??? flex ToolTip

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

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

  1. <mx:Style>?
  2. ??? ToolTip?
  3. ??? {?
  4. ??????? fontSize:19;?
  5. ??????? color:#FF6699;?
  6. ??? }?
  7. </mx:Style>?


3.设定工具提示宽度
As代码

  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>?


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

As代码

  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" />?


4.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.在工具条上使用动画效果
As代码

  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.建立用户自定义的工具条提示

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 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,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,
  54. ???????????????????????????????????? {label: 'baa baa black sheep,have you any wool',data: 57,
  55. ???????????????????????????????????? {label: 'jack and jill went up the hill',data: 58,
  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. ??? //toolTipMenu.setStyle("selectionEasingFunction",myEasingFunction);
  86. ??? toolTipMenu.addEventListener(MouseEvent.ROLL_OUT,hideToolTip);
  87. ??? toolTipMenu.addEventListener("buttonClicked",catchButtonClick);
  88. ???
  89. ??? var pt1:Point = new Point(this.dgMouseX,this.dgMouseY);
  90. ??????????? pt1 = dg.localToGlobal(pt1);
  91. ??????????? //offset this for now to fix slight bug where immediate mouSEOver of tooltip causes it to hide
  92. ??? toolTipMenu.show(pt1.x+10,pt1.y+0);
  93. ???
  94. ??? }
  95. ???
  96. ??? //-------------------------------------------------------------------------
  97. ???
  98. ??? private function hideToolTip(event:MouseEvent):void
  99. ??? {
  100. ??? //trace("MENU --- " + event.relatedObject + " - " + event.target + " - " + event.currentTarget);
  101. ??? toolTipMenu.hide();
  102. ??? }
  103. ???
  104. ??? //-------------------------------------------------------------------------
  105. ???
  106. ??? private function dgMouseMove(event:MouseEvent):void
  107. ??? {
  108. ??? this.dgMouseX = dg.mouseX;
  109. ??? this.dgMouseY = dg.mouseY;
  110. ??? }
  111. ???
  112. ???
  113. ??? //-------------------------------------------------------------------------
  114. ???
  115. ??? private function dgMouSEOver(event:MouseEvent):void
  116. ??? {
  117. ??? this.dgMouseX = dg.mouseX;
  118. ??? this.dgMouseY = dg.mouseY;
  119. ??? //trace("DATAGRID OVER --- " + event.target + " - " + event.currentTarget + " - " + event.relatedObject);
  120. ??? if(event.target is DataGridItemRenderer)
  121. ??? {
  122. ??????? if(toolTipMenu != null)
  123. ??????? {
  124. ??????????? if(toolTipMenu.visible && toolTipMenu.data == event.target.data)
  125. ??????????????? return;
  126. ??????? }
  127. ??????? if(!DataGridItemRenderer(event.target).styleName.showDataTips)
  128. ??????????? return;
  129. ???????????
  130. ??????? toolTipTimer = new Timer(1000,0);
  131. ??????? toolTipTimer.addEventListener(TimerEvent.TIMER,function():void
  132. ???????????????????????????????????????????????????????????????? {
  133. ??????????????????????????????????????????????????????????????????? createMenu(event.target.data);
  134. ???????????????????????????????????????????????????????????????? }
  135. ????????????????????????????????????? );
  136. ??????? toolTipTimer.start();
  137. ??? }
  138. ??? }
  139. ???
  140. ??? //-------------------------------------------------------------------------
  141. ???
  142. ??? private function dgMouSEOut(event:MouseEvent):void
  143. ??? {
  144. ??? if(toolTipTimer) toolTipTimer.stop();
  145. ??? //trace("DATAGRID OUT --- " + event.target + " - " + event.currentTarget + " - " + event.relatedObject);
  146. ??? if(event.relatedObject is mx.controls.listClasses.ListBaseContentHolder || event.relatedObject is MenuToolTipRenderer)
  147. ??? {
  148. ??????? return;
  149. ??? }
  150. ??? if(event.target is DataGridItemRenderer)
  151. ??? {
  152. ??????? if(event.relatedObject is Menu || !event.relatedObject is MenuToolTipRenderer) return;
  153. ??????? if(toolTipMenu != null) toolTipMenu.hide();
  154. ??????? }
  155. ??? }
  156. ???
  157. ??? //-------------------------------------------------------------------------
  158. ???
  159. ??? private function catchButtonClick(e:Event):void
  160. ??????? {
  161. ??? mx.controls.Alert.show(e.target.data.label + " was clicked to take you to " + e.target.data.link);
  162. ??? }
  163. ???????
  164. ??? ]]>?
  165. </mx:Script>?
  166. ?
  167. </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
sdks3.0.0frameworksprojectsframeworksrcmxskinshaloToolTipBorder
引入包的路径: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. {
  7. Tip=ToolTipManager.createToolTip(str,event.stageX,event.stageY) as ToolTip;
  8. //根据需要动态设置tooltip的style属性
  9. myTip.move(event.stageX,event.stageY);
  10. }
  11. private function hideTip():void
  12. ??? {
  13. ??????? ToolTipManager.destroyToolTip(myTip);
  14. ??? }
  15. ??? ]]>?
  16. </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事件形式??
效果图:




zhuan zi : http://demojava.iteye.com/blog/1181955

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读