Flex中实现自定义ToolTip,也很简单,只要按如下三个步骤即可:
1.容器类实现mx.core.IToolTip接口,如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
implements="mx.core.IToolTip"
width="240"
alpha=".2"
borderThickness="2"
backgroundColor="#A4A4A4"
dropShadowEnabled="true"
borderColor="black"
borderStyle="solid"
roundedBottomCorners="true"
cornerRadius="10"
horizontalAlign="center"
height="80"
verticalAlign="middle">
<mx:Script><![CDATA[
[Bindable]
public var staName:String = "";
[Bindable]
public var percentage:String = "";
// Implement required methods of the IToolTip interface; 接口需要实现的方法 必须写!
public var _text:String;
[Bindable]
public function get text():String {
return _text;
}
public function set text(value:String):void {
}
]]></mx:Script>
<mx:HBox x="0" y="0" width="100%" height="100%" verticalAlign="top">
<mx:Label text="{staName}" width="30%" id="lbl_staName" textAlign="center"/>
<mx:Image width="30%" source="@Embed(source='../../../../Images/fltIcon.PNG')" horizontalAlign="right"/>
<mx:Label text="{percentage}" width="20%" id="lbl_percentage" textAlign="center"/>
</mx:HBox>
</mx:Panel>
2.要实现动态加载ToolTip,需要设置ToolTip载体控件的事件,例如:
var tmpDisplay:DisplayObject= this.getChildByName(s) as DisplayObject;
//绑定提示卡
tmpDisplay.toolTip=" "; //注意一定要设置此属性 否则无法显示
//可只用第一个ToolTipEvent.TOOL_TIP_CREATE
tmpDisplay.addEventListener(ToolTipEvent.TOOL_TIP_CREATE,function (event:ToolTipEvent):void{createCustomTip('邯郸','80%',event)});
tmpDisplay.addEventListener(ToolTipEvent.TOOL_TIP_SHOW,function (event:ToolTipEvent):void{positionTip(event)});
tmpDisplay.addEventListener(ToolTipEvent.TOOL_TIP_END,function (event:ToolTipEvent):void{onToolTipEnd(event)});
3.完成ToolTip创建、显示、销毁的三个方法:
//创建提示卡
private function createCustomTip(staName:String, percentage:String, event:ToolTipEvent):void {
stt.styleName="StationToolTipStyle1";
stt.staName = staName;
stt.percentage=percentage;
event.toolTip = stt;
}
//确定位置 此方法完成显示坐标的设置,如果设置不正确 可能会引发频繁调用
private function positionTip(event:ToolTipEvent):void{
//由于诸多点 都放在了Canvas之上 所以要受Canvas坐标影响 使用localToGlobal方法做转换
var objSource:DisplayObject=event.currentTarget as DisplayObject;
var pt:Point = new Point();
pt.x = 0;
pt.y = 0;
pt = objSource.localToGlobal(pt); //受Canvas坐标影响 使用localToGlobal方法做转换
event.toolTip.x=pt.x + objSource.width+ 10;
event.toolTip.y=pt.y-objSource.height/2;
/*如果没有Canvas(也就是父容器)影响的话 可以直接设置坐标
event.toolTip.x=event.currentTarget .x + event.currentTarget .width+ 10;
event.toolTip.y=event.currentTarget .y-event.currentTarget .height/2;
*/
}
//隐藏后销毁
private function onToolTipEnd(event:ToolTipEvent):void
{
var ttip:StationToolTip = event.toolTip as StationToolTip;
ToolTipManager.destroyToolTip(ttip);
ttip = null;
}
用此三招,建立动态绑定的自定义ToolTip,无往而不胜!
来源:http://blog.csdn.net/ozzy_003/article/details/6058880
可参考:UIComponent研究
示例2(自己例子):
效果图:
if(label !=null && label != ""){ line.toolTip=" "; line.addEventListener(ToolTipEvent.TOOL_TIP_CREATE, createCustomTip); }
private function createCustomTip(event:ToolTipEvent):void { var line:SequenceLine=event.target as SequenceLine; var tip:SuperToolTip=new SuperToolTip(); tip.title="服务基本信息"; if (line.data != null) { tip.bodyData=line.data; } event.toolTip=tip; }
SuperToolTip.mxml:
<?xml version="1.0"?> <!-- tooltips/ToolTipComponents/PanelToolTip.mxml (tos.mxml)--> <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" implements="mx.core.IToolTip" width="350" height="150" horizontalScrollPolicy="off" verticalScrollPolicy="off" styleName="viewSuperToolTip"> <mx:Style> .viewSuperToolTip{ borderColor: #DDDDDD; borderAlpha: 1; borderThicknessLeft: 1; borderThicknessTop: 1; borderThicknessBottom: 1; borderThicknessRight: 1; roundedBottomCorners: true; headerColors: #FFFFCF, #FFFFCF; footerColors: #FFFFCF, #FFFFCF; backgroundColor: #FFFFCF; dropShadowEnabled: false; shadowDistance: 0; shadowDirection: center; dropShadowColor: #96baeb; cornerRadius: 5; titleStyleName: "panelTitle"; headerHeight: 22; } .panelTitle { fontSize: 12; fontWeight: bold; color:#2c5c9e; } </mx:Style> <mx:Script> <![CDATA[ [Bindable] private var _bodyData:Object=new Object(); public var _text:String; public function get text():String { return _text; } public function set text(value:String):void { this._text=value; } public function get bodyData():Object { return _bodyData; } public function set bodyData(bodyData:Object):void { this._bodyData=bodyData; } ]]> </mx:Script> <mx:Label width="100%" height="5"/> <mx:Label text="{'英文名:'+_bodyData.serviceNameEn}" width="100%" fontSize="12"/> <mx:Label text="{'中文名:'+bodyData.serviceNameCN}" width="100%" fontSize="12"/> <mx:Label text="{'提供方:'+bodyData.providerAppName} ({bodyData.providerAppCode})" width="100%" fontSize="12"/> <mx:Label text="{'消费方:'+bodyData.consumerAppName} ({bodyData.consumerAppCode})" width="100%" fontSize="12"/> </mx:Panel>
..
相关推荐
### Flex自定义ToolTip详解 在Flex开发中,`ToolTip`是一种非常实用的界面元素,用于在用户悬停或聚焦某个控件时显示额外的信息。默认情况下,Flex提供了基本的`ToolTip`功能,但有时为了满足特定的设计需求或者...
在Flex中,可以通过`flash.display.Loader`加载图片,并将其添加到`DisplayObjectContainer`中。确保处理好图片的宽高,以适应工具提示的大小。 5. **应用自定义工具提示**: 在Flex应用中,将`MyToolTip`组件设置...
- **数据绑定**:解释了数据绑定的概念,并展示了如何在 Flex 中实现数据绑定。 - **容器简介**:概述了容器的作用及不同类型的容器选择。 - **布局组件**:讲解了如何使用不同的布局策略来组织界面元素。 - **应用...
工具提示可以通过设置控件的`toolTip`属性来实现,该属性可以接受字符串或自定义的控件作为值。 #### 基于菜单的控件 基于菜单的控件,如`PopupMenu`和`MenuBar`,用于创建上下文菜单或主菜单。这些控件提供了一种...
6. **事件处理**:`ToolTipDataGrid`提供了相关的事件,如`showTooltip`和`hideTooltip`,开发者可以通过监听这些事件来实现自定义逻辑,比如追踪用户行为或执行其他操作。 在实际开发中,`ToolTipDataGrid`的实现...
6. 修改Flex组件的样式,你可以创建自定义样式类并将其应用于组件。例如,对于Alert组件,你可以定义`AlertTitle`和`AlertMessage`样式,然后分别赋值给`titleStyleDeclaration`和`messageStyleDeclaration`属性。...
13. **设置ToolTip持续显示时间**:通过调整`ToolTipManager.hideDelay`属性,可以设置ToolTip在鼠标离开后多长时间消失。 14. **BigEndian和LittleEndian测试**:在ByteArray中,`endian`属性用于设置字节序,`BIG...
面包屑导航是另一种菜单形式,能显示用户在网站中的位置,通过JS和CSS可以实现面包屑导航的动态更新和美化。 19. **自适应布局** 根据窗口大小自动调整菜单栏的排列方式,例如从横向排列变为垂直排列。 以上就是...
3. 与Vue Router结合:iView的Menu组件可以与Vue Router无缝集成,实现动态路由菜单。 4. 动态加载和懒加载:对于大型项目,可以按需加载组件,减少初始加载时间。 五、性能优化 iView 2.0考虑了性能优化,例如...
3. **实现MouseOver事件监听**:在Flex中,可以使用`mx.events.MouseEvent.MOUSE_OVER`事件来监听鼠标悬停。为地图或特定图层添加事件监听器,当鼠标进入某个图层对象的边界时,触发响应函数。 4. **获取鼠标位置**...
教程将介绍如何实现按需加载。 13. **兼容性**:讲解 ElementUI 对浏览器的兼容性以及如何处理不兼容的问题。 通过这个离线教程,开发者不仅可以了解 ElementUI 的核心概念,还能学习到最佳实践,提高开发效率。...
1. **Button**:各种类型和状态的按钮,如普通按钮、悬浮按钮、加载按钮等。 2. **Layout 布局**:栅格系统和 Flex 布局,用于构建页面结构。 3. **Form 表单**:表单元素如 Input、Select、Checkbox、Radio、...