`
uule
  • 浏览: 6349124 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Flex实现自定义ToolTip 动态加载

    博客分类:
  • Flex
 
阅读更多

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>

 

..

 

  • 大小: 18.6 KB
分享到:
评论

相关推荐

    Flex 自定义ToolTip

    ### Flex自定义ToolTip详解 在Flex开发中,`ToolTip`是一种非常实用的界面元素,用于在用户悬停或聚焦某个控件时显示额外的信息。默认情况下,Flex提供了基本的`ToolTip`功能,但有时为了满足特定的设计需求或者...

    Using htmlText in a toolTip in flex

    在Flex中,可以通过`flash.display.Loader`加载图片,并将其添加到`DisplayObjectContainer`中。确保处理好图片的宽高,以适应工具提示的大小。 5. **应用自定义工具提示**: 在Flex应用中,将`MyToolTip`组件设置...

    flex组件介绍

    工具提示可以通过设置控件的`toolTip`属性来实现,该属性可以接受字符串或自定义的控件作为值。 #### 基于菜单的控件 基于菜单的控件,如`PopupMenu`和`MenuBar`,用于创建上下文菜单或主菜单。这些控件提供了一种...

    flex ToolTipDataGrid

    6. **事件处理**:`ToolTipDataGrid`提供了相关的事件,如`showTooltip`和`hideTooltip`,开发者可以通过监听这些事件来实现自定义逻辑,比如追踪用户行为或执行其他操作。 在实际开发中,`ToolTipDataGrid`的实现...

    flex 一问一答

    6. 修改Flex组件的样式,你可以创建自定义样式类并将其应用于组件。例如,对于Alert组件,你可以定义`AlertTitle`和`AlertMessage`样式,然后分别赋值给`titleStyleDeclaration`和`messageStyleDeclaration`属性。...

    Flex 开发技巧集

    13. **设置ToolTip持续显示时间**:通过调整`ToolTipManager.hideDelay`属性,可以设置ToolTip在鼠标离开后多长时间消失。 14. **BigEndian和LittleEndian测试**:在ByteArray中,`endian`属性用于设置字节序,`BIG...

    js和css实现的19个菜单栏案例

    面包屑导航是另一种菜单形式,能显示用户在网站中的位置,通过JS和CSS可以实现面包屑导航的动态更新和美化。 19. **自适应布局** 根据窗口大小自动调整菜单栏的排列方式,例如从横向排列变为垂直排列。 以上就是...

    iview-2.0.zip

    3. 与Vue Router结合:iView的Menu组件可以与Vue Router无缝集成,实现动态路由菜单。 4. 动态加载和懒加载:对于大型项目,可以按需加载组件,减少初始加载时间。 五、性能优化 iView 2.0考虑了性能优化,例如...

    鼠标提示功能

    3. **实现MouseOver事件监听**:在Flex中,可以使用`mx.events.MouseEvent.MOUSE_OVER`事件来监听鼠标悬停。为地图或特定图层添加事件监听器,当鼠标进入某个图层对象的边界时,触发响应函数。 4. **获取鼠标位置**...

    elementUi离线网页教程_2019最新.rar

    教程将介绍如何实现按需加载。 13. **兼容性**:讲解 ElementUI 对浏览器的兼容性以及如何处理不兼容的问题。 通过这个离线教程,开发者不仅可以了解 ElementUI 的核心概念,还能学习到最佳实践,提高开发效率。...

    AIR教程-AIR教程

    Adobe AIR允许开发者构建跨平台的桌面应用程序,结合了Flash和Flex的强大力量,提供了一种在桌面环境中运行富互联网应用(RIA)的方式。 首先,我们来看如何创建右键菜单。在Adobe AIR中,可以使用`NativeMenu`和`...

    element2.4.6版本离线.zip

    1. **Button**:各种类型和状态的按钮,如普通按钮、悬浮按钮、加载按钮等。 2. **Layout 布局**:栅格系统和 Flex 布局,用于构建页面结构。 3. **Form 表单**:表单元素如 Input、Select、Checkbox、Radio、...

Global site tag (gtag.js) - Google Analytics