`

Flex个人知识库7之漂亮框框

阅读更多
[size=large]1、 效果如图:[img]

[/img]

实现方式:
FieldSet类
/**
* copyright 2006 Mike Nimer, All rights reserved.
 */
package component
{
	import mx.containers.VBox;
	import mx.controls.Label;
	import mx.skins.Border;
	import mx.skins.RectangularBorder;
	import mx.utils.ColorUtil;

	public class FieldSet extends VBox
	{
		protected var legend:Label;
		
		public function FieldSet()
		{
			super();
			this.setStyle("borderColor", "#2d90e3");
			this.setStyle("cornerRadius", 5);
			this.setStyle("borderSkin", FieldSetBorder); 
			
		}
		
		public function getLabelWidth():int
		{
			return this.legend.textWidth;
		}
		
		override protected function createChildren():void
		{			
			var cr:int = getStyle("cornerRadius");
			legend = new Label();
			legend.text = this.label;
			legend.setStyle("color", "#2d90e3");
			legend.setStyle("paddingLeft", cr + 10);
			this.addChild(legend);
			super.createChildren();			
		}
		
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);	
		}
		
	}
}


FieldSetBorder:
/**
 * copyright 2006 Mike Nimer, All rights reserved.
 */
package component
{
	import flash.display.Graphics;
	
	import mx.controls.Label;
	import mx.core.EdgeMetrics;
	import mx.skins.RectangularBorder;

	public class FieldSetBorder extends RectangularBorder
	{
		public function FieldSetBorder()
		{
			super(); 
		}
		
		//----------------------------------
		//  borderMetrics
		//----------------------------------
	
		/**
		 *  @private
		 *  Storage for the borderMetrics property.
		 */
		private var _borderMetrics:EdgeMetrics;
	
		/**
		 *  @private
		 */
		override public function get borderMetrics():EdgeMetrics
		{		
			if (_borderMetrics)
				return _borderMetrics;
				
			var borderStyle:String = getStyle("borderStyle");
		
			_borderMetrics = new EdgeMetrics(3, 1, 3, 3);
	 		
			return _borderMetrics;
		}		
			
		/**
		 *  @private
		 *  Draw the background and border.
		 */
		override protected function updateDisplayList(w:Number, h:Number):void
		{	
			super.updateDisplayList(w, h);
	
			var borderAlpha:int = 1.0;
			var borderThickness:int = getStyle("borderThickness");
			var borderStyle:String = getStyle("borderStyle");
			var borderColor:uint = getStyle("borderColor");
			var cornerRadius:Number = getStyle("cornerRadius");
			var backgroundColor:uint = getStyle("backgroundColor");
			var backgroundAlpha:Number= getStyle("backgroundAlpha");
			
			
			var labelWidth:int = 0;
			if( this.parent is FieldSet )
				labelWidth = FieldSet(this.parent).getLabelWidth(); 
	
	
			var g:Graphics = graphics;
			g.clear();
			
			g.lineStyle( borderThickness, borderColor, borderAlpha );							
		    
		    var startX:Number = labelWidth +cornerRadius + 10 + 10;
		    var startY:Number = 10;

			if( backgroundColor != 0 )
				g.beginFill(backgroundColor, backgroundAlpha);
				
			g.moveTo( startX, startY );
			g.lineTo( width-cornerRadius, startY );
			g.curveTo(width-1, startY+1, width, startY+cornerRadius);	
			g.lineTo( width, height-cornerRadius );	
			g.curveTo(width-1, height-1, width-cornerRadius, height);	
			g.lineTo( 0+cornerRadius, height );	
			g.curveTo(0+1, height-1, 0, height-cornerRadius);	
			g.lineTo( 0, startY+cornerRadius );	
			g.curveTo(0+1, startY+1, cornerRadius, startY);	
			g.lineTo( cornerRadius+10, startY );
			
			if( backgroundColor != 0 )
				g.endFill();
		}
				
	}
}


使用方式:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   xmlns:component="component.*" >
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<component:FieldSet label="漂亮的框框" width="200" height="100" left="100">
		<s:Group>
			<s:Label text="Hello World"/>
		</s:Group>
	</component:FieldSet>
</s:Application>
[/size]

使用率柱状图:

ComplexHPercentageBar.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:mx="library://ns.adobe.com/flex/mx" 
				xmlns="library://ns.apuisc.com/flex"
				width="220" left="5" verticalAlign="middle"
				xmlns:local="*" xmlns:component="component.*"
				>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import spark.components.Label;
			[Bindable]
			public var percentageBarBgColor:uint = uint("0x04dc04");
			[Bindable]
			public var percent:int=60;
			[Bindable]
			public var detail:String="使用率";
			
		]]>
	</fx:Script>
	<local:HPercentageBar id="percentageBar" width="40%" height="20" bgColor="{percentageBarBgColor}" percent="{percent}"/>
	<s:Label width="60%" height="100%" id="label" text="{detail}" paddingLeft="3" paddingRight="3" paddingBottom="3" paddingTop="3"/>
</s:HGroup>


HPercentageBar.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
		  xmlns:s="library://ns.adobe.com/flex/spark" 
		  width="100%" height="100%" borderWeight="1">
	<s:layout>
		<s:HorizontalLayout verticalAlign="middle" gap="10"/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			[Bindable]
			public var bgColor:uint = uint("0x04dc04");
			[Bindable]
			public var percent:int;
			
		]]>
	</fx:Script>
	<s:Rect percentWidth="{percent}" percentHeight="100" alpha="0.8f" >
		<s:fill >
			<s:SolidColor color="{bgColor}" />
		</s:fill>
	</s:Rect>
</s:BorderContainer>

使用:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   xmlns:component="component.*" xmlns:hp="*">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
   <hp:ComplexHPercentageBar width="200" height="100" left="100"/>
</s:Application>

  • 大小: 1.6 KB
  • 大小: 479 Bytes
分享到:
评论

相关推荐

    Flex个人知识库之Apple组件

    "Flex个人知识库之Apple组件"这个标题暗示了这是一份关于使用Adobe Flex技术来构建针对Apple设备应用的知识资源。Flex是一种开源的、基于ActionScript的框架,用于创建富互联网应用程序(RIA),尤其适用于构建跨...

    Flex个人知识库(3)

    【Flex个人知识库(3)】是一个集合了与Flex相关技术知识的资源包,其中包含了一个名为"CloudMonitor"的子文件。Flex是一种用于构建富互联网应用(RIA,Rich Internet Applications)的技术,由Adobe公司开发,它允许...

    Flex小知识点

    Flex SDK包含了一整套的组件库,如Button、Label、List等,这些组件可以帮助开发者快速构建交互式的用户界面。此外,Flex还支持数据绑定,允许UI组件与后台数据模型之间自动同步,极大地简化了开发过程。 Flex的...

    Flex 个人网站源码

    "Flex 个人网站源码"指的是使用Flex技术构建的个人网站的完整源代码,它可能包含了网页设计、交互逻辑以及数据管理等多方面的内容。 这个源码是用AS3编写的,这意味着它利用了ActionScript 3的强大功能,包括面向...

    Flex常用教程及库

    7. **工具支持**:介绍Flex Builder或Flash Builder等IDE如何支持皮肤编辑和预览,以及使用Flex SDK和命令行工具进行皮肤打包和部署的方法。 8. **实例分析**:提供实际的皮肤设计案例,帮助读者理解如何在实际项目...

    Flex仿windows7

    在Flex仿Windows7项目中,开发者可能运用了Flex的组件库,如SkinnableContainer、Button、Canvas等,来创建出类似Windows7的任务栏、开始菜单、窗口等元素。 该项目强调了扩展性和代码的层次性。这意味着代码被组织...

    flex个人财务软件及源码

    《Flex个人财务软件及其源码解析》 Flex个人财务软件是一款基于Adobe Flex技术开发的财务管理应用,它专为个人用户提供了一种便捷的方式来管理和追踪自己的财务状况。源码的开放使得开发者能够深入理解软件的工作...

    flex常用知识问答

    flex 常用 知识 问答 flex 常用 知识 问答 flex 常用 知识 问答

    Flex拖拽库flex拖拽库

    本篇文章将详细讲解Flex拖拽库的相关知识点。 一、Flex中的拖放(Drag-and-Drop)机制 1. 拖放事件模型:在Flex中,实现拖放功能涉及一系列的事件,包括`dragStart`、`drop`、`dragEnter`、`dragLeave`、`dragOver`...

    flex柱状图表很漂亮的源码

    在本案例中,"flex柱状图表很漂亮的源码"指的是使用Flex技术创建的,具有美观视觉效果的柱状图表。这种图表通常用于数据可视化,帮助用户直观地理解大量信息。 柱状图是一种常见的统计图表类型,它通过矩形的高度或...

    强化flex基础知识

    7. **Flex构建过程** 使用Flex SDK的命令行工具或者Flex Builder IDE,开发者可以将MXML和ActionScript源文件编译为SWF或AIR应用程序。编译过程中,MXML文件会被转换为ActionScript类,然后与ActionScript代码一起...

    学习flex基础知识

    7. 服务和数据访问:了解如何使用Flex连接到Web服务,如AMF(Action Message Format)和SOAP,以及XML和JSON数据的处理。 8. 动画和效果:学习如何使用Flex实现过渡效果和动画,增强用户体验。 9. 测试和调试:掌握...

    Flex 标签云 特效 漂亮

    {name: "漂亮", weight: 7} ]); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); for ...

    Flex efflex 开源库

    NULL 博文链接:https://windmark.iteye.com/blog/1709243

    ArcGIS Flex API和SuperMap Flex API实现的军标箭头库

    本项目聚焦于使用Flex API,一种基于Adobe Flex的开发框架,来实现军标箭头库的构建。这涉及到Web GIS应用的开发,以及如何将军事符号标准(例如北约军标)与地图服务相结合。 首先,ArcGIS Flex API是由Esri公司...

    Flex Flex Flex Flex

    Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...

    Flex万年历记事本_flex源码

    在Flex源码中,我们可以期待看到以下几个关键知识点: 1. **MXML与ActionScript**:Flex应用主要由两种语言编写,MXML用于定义组件结构和界面布局,而ActionScript则处理逻辑和业务代码。在"万年历记事本"的源码中...

    Flex 项目开发,个人专用

    Flex 项目开发,个人专用 Flex 项目开发,个人专用 Flex 项目开发,个人专用 Flex 项目开发,个人专用

    flex学习笔记 flex学习总结 flex学习教程

    Flex是Adobe公司推出的一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和Flex框架,可以创建交互性强、用户体验优秀的...通过阅读这些材料,你将能够逐步掌握Flex开发技术,踏上Flex开发之旅。

    Flex Builder 4-7 -04

    FLEX开发工具。Flex Builder 4-7 win64 安装文件,第四卷。

Global site tag (gtag.js) - Google Analytics