`
zhouyangchenrui
  • 浏览: 81856 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Flex例子--通过继承增加新的功能

阅读更多
Flex中通过继承可以为新组件增加新的功能,如通过注入方法,改变背景色,改变位置和高度等。这里主要掌握原组件的一些特性,属性和方法,以便根据需要的功能加以覆写(也可以自己扩展),达到自己想要的效果。下面是一个简单的例子
1、新建MyDataGrid.as,继承DataGrid,覆写drawRowBackground方法,注入rowColorFunction方法。
package com.test
{
	import flash.display.Sprite;
	
	import mx.controls.Alert;
	import mx.controls.DataGrid;
	import mx.controls.dataGridClasses.DataGridColumn;

	public class MyDataGrid extends DataGrid
	{
		private var _rowColorFunction:Function;
		
		public function MyDataGrid()
		{
			super();
		}
		//为MyDataGrid注入函数,get set
		public function set rowColorFunction(f:Function):void{
			this._rowColorFunction = f;
		}
		
		public function get rowColorFunction():Function{
			return this._rowColorFunction;
		}
		
		//覆写drawRowBackground方法,可改变位置、高度、颜色等,这里只改变背景颜色
		override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void{
	    	if( this.rowColorFunction != null ){
	    		if( rowIndex < this.dataProvider.length && rowIndex < this.listItems.length && this.listItems[rowIndex].length>0){
		    		var data:XML =  this.listItems[rowIndex][0].data;
		    		color = this.rowColorFunction.call(this,data,color);
	    		}else{
	    			color = this.rowColorFunction.call(this,null,color);
	    		}
	    	}
		    super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
        }
	}
}

2、新建MyDataGridTest.mxml文件,MyDataGrid中可以使用已经注入的方法rowColorFunction
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
	 initialize="init()" xmlns:md="com.test.*" width="600" height="300">
	
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			
			private var dataXml:XML;
			
			private function init():void {
				dataXmlService.url = "students.xml";//可改成具体请求方式
				try{
					dataXmlService.send();
				}catch(e:IOError){
					Alert.show("请求出错");
				}
			}
			
			private function dataXmlToData(evt:ResultEvent):void{
				dataXml = XML(evt.result);
				//提供数据源
				myDataGrid.dataProvider = dataXml.children();
			}
			
			//设置行背景色的方法
			private function getRowColor(data:Object,color:uint):Object {
				if(data==null) return 0xFFFFFF;
				
				return data.@color;
			}
		]]>
	</mx:Script>
	
	<mx:HTTPService id="dataXmlService" resultFormat="xml" result="dataXmlToData(event)" />
	<!--使用自己定义的组件MyDataGrid,可以使用已经注入的方法rowColorFunction -->
	<md:MyDataGrid id="myDataGrid" rowColorFunction="getRowColor" x="23.5" y="5" width="553" height="275" fontSize="12" fontWeight="normal">
		<md:columns>
			<mx:DataGridColumn headerText="学号" dataField="@col1"/>
			<mx:DataGridColumn headerText="姓名" dataField="@col2"/>
			<mx:DataGridColumn headerText="年龄" dataField="@col3"/>
			<mx:DataGridColumn headerText="爱好" dataField="@col4"/>
			<mx:DataGridColumn headerText="住址" dataField="@col5"/>
		</md:columns>
	</md:MyDataGrid>
</mx:Application>

3、使用的xml数据students.xml和显示效果
<?xml version="1.0" encoding="UTF-8"?>
<datas>
<data col1="2100" col2="张三" col3="20" col4="篮球" col5="北京" color="0x8DFEFE" />
<data col1="2101" col2="张四" col3="21" col4="篮球" col5="北京" color="0x8DFEFE" />
<data col1="2102" col2="张五" col3="22" col4="篮球" col5="北京" color="0x8DFEFE" />
<data col1="2103" col2="张六" col3="20" col4="篮球" col5="北京" color="0x8DFEFE" />
<data col1="2104" col2="张七" col3="22" col4="篮球" col5="北京" color="0x8DFEFE" />
<data col1="2105" col2="张八" col3="22" col4="篮球" col5="北京" color="0xAABBDD" />
<data col1="2106" col2="李四" col3="20" col4="篮球" col5="北京" color="0xAABBDD" />
<data col1="2107" col2="张大" col3="21" col4="篮球" col5="北京" color="0xAABBDD" />
<data col1="2108" col2="张关" col3="21" col4="篮球" col5="北京" color="0xAABBDD" />
<data col1="2109" col2="张看" col3="20" col4="篮球" col5="北京" color="0xAABBDD" />
</datas>

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

相关推荐

    flex----组件---行为类与特效类

    Flex提供了一个名为Effect类的基类,开发者可以通过继承这个类并覆盖其方法来创建自定义特效。同时,Flex还提供了EffectManager类来管理和控制特效的执行。例如,Fade特效用于改变组件的透明度,Slide特效则用于改变...

    FLEX教程-FLEX教程

    - **示例应用**: 展示 Flex 和 Java 之间基本通信的例子。 - **实现**: - 创建 Java 后端服务。 - 在 Flex 客户端调用该服务。 #### 23. Java&Flex:RemoteObject - **RemoteObject**: Flex 中用于与远程服务...

    Flex-Jsp-Mysql简单结合例子

    根据给定的信息,本文将详细解释“Flex-Jsp-Mysql简单结合例子”这一主题,包括Flex、JSP以及MySQL在项目中的应用与交互,并重点分析MVC架构在Flex中的实现方式。 ### Flex简介 Flex是一种用于构建跨浏览器、跨...

    flex itemRenderer深入学习--flex相册例子

    本篇文章将深入探讨如何利用ItemRenderer实现一个灵活且功能丰富的相册示例,同时也会涉及Flex中的一些核心概念和编程技巧。 首先,我们需要了解ItemRenderer的基本结构。ItemRenderer是ActionScript类,通常继承自...

    flex例子.flex源程序

    通过这个"flex例子.flex源程序",你不仅可以了解Flex的基本语法和组件使用,还能学习到如何组织和管理一个Flex项目,以及如何利用FlexCover这样的工具进行测试和质量控制。在深入学习过程中,还可以尝试扩展和修改...

    flex4 httpservice 例子

    它提供了强大的组件库、数据绑定和高级图形功能,使得开发者能够创建具有高度交互性和视觉吸引力的Web应用。在Flex4中,`HTTPService`是用于与服务器进行HTTP通信的重要类,特别适用于发送异步请求并接收XML数据。 ...

    flex鱼眼显示图片的例子

    这个"flex鱼眼显示图片的例子"是一个Flex项目,它展示了如何使用Flex技术实现一个鱼眼效果的图片显示功能。鱼眼效果通常指的是将图像扭曲成类似鱼眼镜头所拍摄的弧形视野,这种效果在视觉上往往能带来独特的体验。 ...

    巨大数量的Flex例子,学习Flex的好

    这个标题和描述所提及的“巨大数量的Flex例子”表明,这个压缩包可能包含了大量的Flex应用实例,对于学习和理解Flex编程具有极大的帮助。 Flex的应用场景广泛,包括创建数据驱动的Web应用程序、企业级应用、桌面...

    FLEX的一个DataGrid例子

    本例子旨在帮助开发者更好地理解和应用DataGrid,通过实例来学习其基本功能和特性。 DataGrid是Flex提供的一个可自定义的、可交互的数据展示控件,它能够将数组或集合中的数据以表格的形式展示出来,每个单元格都...

    Flex各自定义组件事件通讯例子

    Flex自定义组件是指开发者根据项目需求,通过继承已有的Flex基类(如UIComponent或Canvas),并添加特定功能和样式来创建的组件。自定义组件可以扩展Flex库中默认组件的功能,提高代码重用性和灵活性。 1. 组件创建...

    Flex-DataGrid源码及资料

    Flex DataGrid是一款在Adobe Flex开发环境中广泛使用的组件,主要用于展示和操作大量结构化的数据。它是一种灵活的表格视图,可以轻松地实现数据的排序、筛选、分页等功能。在这个"Flex-DataGrid源码及资料"的压缩包...

    自定义的Alert-Flex4

    通过以上步骤,你可以在Flex 4环境中创建一个功能丰富、视觉效果独特的自定义Alert组件。这不仅可以提高项目的用户体验,还能更好地满足项目需求。在实践中,你可能需要根据具体的需求不断调整和完善,但以上提供的...

    FLEX各种形状绘图例子

    根据提供的文件信息,我们可以深入探讨 FLEX 中图形绘制的相关知识点,包括如何利用 ActionScript 进行...通过对这些类和方法的理解与应用,初学者可以快速掌握 FLEX 中的图形绘制技术,并能够绘制出更多复杂的图形。

    flex自定义事件、简单例子说明

    通过上述示例,我们可以看到Flex自定义事件的强大功能及其在实际项目中的应用。自定义事件不仅可以帮助我们更好地组织代码逻辑,还能实现更复杂的交互需求。掌握如何创建和使用自定义事件对于提高Flex应用的开发效率...

    flex使用viewstack切换页面的例子

    综上所述,"flex使用viewstack切换页面的例子"展示了如何利用Flex 4的ViewStack组件创建多页面应用,通过编程或用户交互来切换不同视图,提供更好的用户导航体验。在实际开发中,理解并熟练运用这些知识点对于构建...

    Flex login flex cairngorm

    在“Flex login flex cairngorm”这个主题中,我们将探讨如何使用Cairngorm框架实现登录功能。 1. **Cairngorm架构基础** - **模型(Model)**:存储和管理应用程序的数据。 - **视图(View)**:用户界面,展示...

    flex 创建as3例子

    在Flex中,这个类通常是继承自`mx.core.Application`或`spark.components.Application`的类。这个类会定义UI元素,如组件、布局和事件处理函数。`.settings`文件可能是IDE的配置文件,包含关于代码格式化、编译选项...

    Adobe Flex 3 Component Explore

    此外,该工具可能还包含了一些自定义组件的例子,展示如何通过继承Flex基础组件并扩展其功能来创建自己的组件。这涉及到面向对象编程的概念,如类的继承、接口的实现以及覆盖父类方法等。 总之,Adobe Flex 3 ...

    flex中的组件重写例子

    1. **继承机制**:Flex支持面向对象编程,我们通常通过继承已有组件类来创建新组件。比如,如果要重写Button,可以创建一个新的类并继承自mx.controls.Button。 2. **覆盖方法**:找到需要修改的组件行为,通常是...

    flex中ComboBox嵌套checkbox的例子以及源代码

    这个主题——“flex中ComboBox嵌套checkbox的例子以及源代码”——将深入探讨如何实现这种功能。 首先,我们要明白,Flex本身并不直接支持ComboBox内部包含Checkbox的原生功能。但是,通过自定义组件或者使用第三方...

Global site tag (gtag.js) - Google Analytics