运行结果如图:

源代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Container xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="{ShowWidth}" height="{ShowHeight}"creationComplete="init()"><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><fx:Style>@namespace s "library://ns.adobe.com/flex/spark";@namespace mx "library://ns.adobe.com/flex/mx";.ToolTip{font-size:12px;fontWeight:bold;}</fx:Style><fx:Script><![CDATA[           /** MarkNumbers,_ShowWord,_DisplayPlace,_ShowType。为必须赋值字段。ShowWidth,ShowHeight可选择赋值*此控件分段视觉化显示数据,*1.可按"三段"和"四段"两种方式显示*2.通过_ShowWord在每个颜色段上显示说明,*3.通过_DisplayPlace设置标记显示的位置,范围为0-500;最好先计算好再输入显示;*4.存在提示显示在数据的下层的问题;*5.控件的大小是固定的;*///-------------------------------------------------------------------------------------------[Bindable]public var ShowWidth:int = 500;//控件显示宽度,用户可以自定义[Bindable]public var ShowHeight:int = 20;//控件显示高度,用户可以自定义public var MarkNumbers : Array;//控件各个点的数值。四个或者五个,四个分三段显示,5个分四段显示//一下字段为自动计算private var ShowMarkNumbers:Array = new Array();//控件各段显示的长度private var StartShowMarkNumbers:Array = new Array();//控件各段显示的起始位置private var ShowPlace:int;//标记在控件上显示的位置。计算为了像素//-------------------------------------------------------------------------------------------import mx.controls.Alert;import mx.controls.ToolTip;import mx.core.UIComponent;import mx.printing.FlexPrintJob;private var _sperite01:Sprite; private var _sperite02:Sprite;private var _sperite03:Sprite;private var _sperite04:Sprite;private var _sperite2:Sprite; private var txtTemp1 : TextField;private var txtTemp2 : TextField;private var txtTemp3 : TextField;private var txtTemp4 : TextField;private var fmt : TextFormat;private var tt:ToolTip = new ToolTip();private var _ShowType:Boolean = true;//true 三段显示,false 四段显示private var _DisplayPlace:Number;//标记显示值private var _ShowWord:Array;//显示在不同颜色段上的文字public function get ShowType():Boolean{return _ShowType;}public function set ShowType(value:Boolean):void{_ShowType = value;}public function get DisplayPlace():Number{return _DisplayPlace;}public function set DisplayPlace(value:Number):void{_DisplayPlace = value;}         public function get ShowWord():Array{return _ShowWord;}public function set ShowWord(value:Array):void{_ShowWord = value;}private function init():void{     //-------------------------------对中间数据的处理var i:int;if(_ShowType)i = 4;elsei = 5;var long:Number = MarkNumbers[i-1] - MarkNumbers[0];for(var j:int = 1; j < i; j++){ShowMarkNumbers[j-1] =int(((MarkNumbers[j] - MarkNumbers[j-1]) / long) * ShowWidth);}Alert.show( ShowMarkNumbers[0],"");for(var n:int = 0; n < i-1; n++){if(n == 0)StartShowMarkNumbers[n] = 0; elseStartShowMarkNumbers[n] = StartShowMarkNumbers[n-1] + ShowMarkNumbers[n-1];}_DisplayPlace = ShowWidth * ( _DisplayPlace / long);//---------------------------------_sperite01 = new Sprite();//建立影片精灵 _sperite02 = new Sprite();_sperite03 = new Sprite();_sperite04 = new Sprite();_sperite2 = new Sprite();//建立影片精灵 txtTemp1 = new TextField();//建立输出文字区域txtTemp2 = new TextField();txtTemp3 = new TextField();txtTemp4 = new TextField();var uicomponent:UIComponent = new UIComponent();uicomponent.addChild(_sperite01);uicomponent.addChild(_sperite02);uicomponent.addChild(_sperite03);uicomponent.addChild(_sperite04);uicomponent.addChild(_sperite2);uicomponent.addChild(txtTemp1);uicomponent.addChild(txtTemp2);uicomponent.addChild(txtTemp3);uicomponent.addChild(txtTemp4);this.addChild(uicomponent);doDraw();}private function doDraw():void{tt.text=_DisplayPlace.toString();tt.width = 80;tt.height = 40;tt.styleName = "ToolTip";tt.visible = false;//button1.addChild(tt);//消瘦_sperite01.graphics.beginFill(0xffffa0);_sperite01.graphics.drawRect(StartShowMarkNumbers[0], 0, int(ShowMarkNumbers[0]), ShowHeight);_sperite01.graphics.endFill();txtTemp1.autoSize = "left";txtTemp1.text = _ShowWord[0];fmt = new TextFormat();fmt.size = 14;txtTemp1.setTextFormat(fmt);txtTemp1.x = StartShowMarkNumbers[0] + (int(ShowMarkNumbers[0]) - txtTemp1.width) /2;txtTemp1.y = _sperite01.y + (_sperite01.height - txtTemp1.height) / 2;//正常范围_sperite02.graphics.beginFill(0x98ff98);_sperite02.graphics.drawRect(StartShowMarkNumbers[1], 0, ShowMarkNumbers[1], ShowHeight);_sperite02.graphics.endFill();txtTemp2.autoSize = "left";txtTemp2.text = _ShowWord[1];fmt = new TextFormat();fmt.size = 14;txtTemp2.setTextFormat(fmt);txtTemp2.x = StartShowMarkNumbers[1] + (_sperite02.width - txtTemp2.width) /2;txtTemp2.y = _sperite02.y + (_sperite02.height - txtTemp2.height) / 2;//超重_sperite03.graphics.beginFill(0xff8080);_sperite03.graphics.drawRect(StartShowMarkNumbers[2], 0, ShowMarkNumbers[2], ShowHeight);_sperite03.graphics.endFill();txtTemp3.autoSize = "left";txtTemp3.text = _ShowWord[2];fmt = new TextFormat();fmt.size = 14;txtTemp3.setTextFormat(fmt);txtTemp3.x = StartShowMarkNumbers[2] + (_sperite03.width - txtTemp3.width) /2;txtTemp3.y = _sperite03.y + (_sperite03.height - txtTemp3.height) / 2;if(!_ShowType){//肥胖_sperite04.graphics.beginFill(0xff2020);_sperite04.graphics.drawRect(StartShowMarkNumbers[3], 0, ShowMarkNumbers[3], ShowHeight);_sperite04.graphics.endFill();txtTemp4.autoSize = "left";txtTemp4.text = _ShowWord[3];fmt = new TextFormat();fmt.size = 14;txtTemp4.setTextFormat(fmt);txtTemp4.x = StartShowMarkNumbers[3] + (_sperite04.width - txtTemp4.width) /2;txtTemp4.y = _sperite03.y + (_sperite04.height - txtTemp4.height) / 2;}//显示标记_sperite2.graphics.beginFill(0x0000ff);_sperite2.graphics.drawRect(_DisplayPlace, 0, 5, ShowHeight);_sperite2.graphics.endFill();_sperite2.addChild(tt); _sperite2.addEventListener(MouseEvent.MOUSE_OVER,showTip);_sperite2.addEventListener(MouseEvent.MOUSE_OUT,hideTip);}//显示提示区域private function showTip(event:MouseEvent):void{tt.visible = true;tt.x = event.localX;tt.y = event.localY;//tt.styleName = "ToolTip";this.graphics.beginFill(0x6699FF,1);this.graphics.endFill();}//隐藏提示区域private function hideTip(event:MouseEvent):void{tt.visible = false;}private function doClean():void{_sperite2.graphics.clear();}]]></fx:Script><mx:Button id="button1" click="doClean()"/></mx:Container>

转载于:https://www.cnblogs.com/wyqx/archive/2011/07/19/2110838.html

flex自定义的分区域状态显示控件——原创相关推荐

  1. 自定义LyricView实现歌词显示控件

    声明:本博客转载自郭霖微信公众号,优秀博客值得多次转播. 地址http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236950&a ...

  2. Qt 自定义信号强度显示控件

    效果图 QWidget自定义信号强度显示控件,比较简单,适合初学者. 主要就是继承于QWidget, 重写paintEvent以绘制: 源码如下: signalwidget.h #ifndef SIG ...

  3. android lrc 歌词view,自定义View强势来袭,用自定义View实现歌词显示控件下篇之自定义LyricView的实现...

    在上篇中,我与大家分享了关于如何进行*.lrc歌词文件的解析,以及将解析完成后的歌词展示在镶嵌在ScrollView中的TextView上,就这样而言,一个简单的歌词显示功能也就实现了. 但是,如何才 ...

  4. Android歌词显示控件TextView自定义

    1. 音乐播放,音乐播放,音乐播放放入服务中,那么App 退入后台音乐也可以播放 2. 歌词显示控件TextView自定义:    使用控件TextView,  为什么不用Listview,歌词不可以 ...

  5. Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件

    古人学问无遗力, 少壮工夫老始成.纸上得来终觉浅, 绝知此事要躬行. – 陆游 <冬夜读书示子聿> 上周 Google I/O 大会的召开,宣布了 Kotlin 语言正式成为了官方开发语言 ...

  6. Android技术分享| 【Android 自定义View】多人视频通话控件

    [Android 自定义View]多人视频通话控件 *以上图片截自微信等待中界面 等待中界面 上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素. 头像 昵称 L ...

  7. 【PB】Windows 状态条控件在 PB 中的运用

    Powerbuilder 所提供的 MDIHelp! 窗口类型带有一个 Sybase 自制的类似状态条的控件(严格说它并非是控件),用户可以通过调用 SetMicroHelp( ) 函数修改该控件的显 ...

  8. android 歌词控件,歌词显示控件的实现上——歌词解析

    最近打算仿网易云音乐的音乐播放器,除了网络框架.接口数据等这些外,最核心的就是音乐的播放和歌词的显示. 考虑到歌词显示控件涉及到歌词解析,自定义控件的实现等等诸多方面,可能文章的篇幅上会比较冗长,同时 ...

  9. 自定义控件:等比例显示控件RatioLayout

    我们经常碰到服务器返回的图片比例大小是一样的,但是分辨力却是不一样的.这时候,就会遇到显示效果的问题.例如,图1和图2都是宽高比例相等,但是分辨率大小不一样的图片,应该按照比例显示,使用等比例显示控件 ...

最新文章

  1. 多种方式测量AMP328频率响应
  2. MySQL主从复制从机验证报错:ERROR 3021(HY000):this operation cannot be performed with a
  3. “AI女神”李飞飞:如果我获诺贝尔奖,我一定以中国人身份去领奖
  4. canal本地运行异常:class com.alibaba.druid.pool.DruidDataSource cannot be cast to
  5. 进云仿美团外卖平台 v1.39源码
  6. 面向对象及软件工程——团队作业3
  7. MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
  8. 集合竞价选股(附源码)
  9. 泛运筹理论初探——Louvain算法简介
  10. python selenium 刷课_基于Python和selenium的内蒙古继续教育网---刷课
  11. 小米手机下载二维码APP
  12. 【Linux】linux清除ip地址命令
  13. Day004--MySQL中的多表查询
  14. 华为nova2s云相册在哪里_华为nova2s截频图片在哪个文件夹 | 手游网游页游攻略大全...
  15. vscode 未使用变量置灰
  16. 腾讯成立技术委员会,地位高于 6 大事业群
  17. Elastic Weight Consolidation(EWC) for Life long Learning
  18. 罗升阳 android系统源代码情景分析,Android系统源代码情景分析
  19. 联想小新pro16和联想小新pro14 2022款哪个好
  20. JS Binding 技术(1)

热门文章

  1. VTK:几何对象之LongLine
  2. Qt Quick的国际化和本地化
  3. OpenGL灰色滤镜
  4. OpenGL 点光源的多遍阴影贴图
  5. C语言鸡尾酒排序cocktail sort算法(附完整源码)
  6. 宏基微型计算机c650使用方法,C650卧式普通车床PLC改造
  7. vscode只有utf8_基于VSCode搭建LaTeX写作环境
  8. 47_pytorch循环神经网络(学习笔记)
  9. solr5.3.1 集成IK中文分词器
  10. Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。