`
darrenzhu
  • 浏览: 802646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义Spark组件

阅读更多
Flex3里面如果要自定义组件,一般首先继承一个flex3中的已有组件,然后覆盖createChildren方法,并在里面实例化你自己的东西。但是Flex4中的spark组件就有些不同了,因为spark组件把逻辑和皮肤分别放在不同的类里面,如Panel,你会发现有一个PanelSkin与之对应。

那么在Flex4中如何自定义自己的组件呢? 按如下步骤:
1)New 一个Mx Skin类并继承你需要的类,比如我的为MyPanelSkin继承自PanelSkin,Flash builder里面提供了new Mx Skin的选项,完成本步骤后,你会发行MyPanelSkin里面已经有PanelSkin里的所有代码了,现在你可以通过可视化或这代码来修改你的皮肤,比如给panel的顶部的右边加上一个最大化按钮,等等,你可以加你所需要的东西

2)在MyPanelSkin里给你的组件添加一个id
比如我将Spark Panel 里原来的titleDisplay改成了如下形式,即添加了自定义的东西
                <!-- layer 3: text -->
                <!--- @copy spark.components.Panel#titleDisplay -->
				<s:VGroup height="100%" width="100%">
					<s:HGroup width="100%" horizontalAlign="center">
						<s:Label id="titleDisplay" maxDisplayedLines="1" fontSize="18" fontFamily="宋体"
								 left="9" right="3" top="1" bottom="0" minHeight="30"
								 verticalAlign="middle" textAlign="start" fontWeight="bold">
						</s:Label>
					</s:HGroup>
					<s:Spacer height="5"/>
					<s:HGroup width="100%" verticalAlign="middle">
						<mx:LinkButton id="btnPreviousDay" label="前一天" fontFamily="宋体"/>
						<s:HGroup width="100%" horizontalAlign="center">
							<s:ComboBox id="comboBoxMonth" width="60"/>
							<s:VGroup paddingTop="3">
								<mx:Label text="月" fontFamily="宋体"/>
							</s:VGroup>
							<s:ComboBox id="comboBoxDay"  width="60"/>
							<s:VGroup paddingTop="3">
								<mx:Label text="日" fontFamily="宋体"/>
							</s:VGroup>
							<s:Spacer width="3"/>
							<s:Button id="searchBtn" label="查看" fontFamily="宋体"/>
							<s:Button id="backBtn" label="返回" fontFamily="宋体"/>
						</s:HGroup>
						<mx:LinkButton id="btnNextDay" label="后一天" fontFamily="宋体"/>
					</s:HGroup>
					<s:Spacer height="2"/>
				</s:VGroup>



3)new 一个MyPanel继承自Spark Panel,并且在里面添加属性,属性名字与MyPanelSkin的id的值保持一致,这一点非常重要,一定要取一样的名字,
并且要给这些变量加上元数据,[SkinPart (required="false or true")],通过这些变量你就可以访问MyPanelSkin里面的元素了,当然必须完成第4步后,你才能访问。

4)按如下方式覆盖partAdd,在partAdd里面操作你的属性,你可以为这些属性所代表的组件添加事件监听器,或者赋初始值。
package view.component
{
	import mx.collections.ArrayCollection;
	
	import spark.components.ComboBox;
	import spark.components.Panel;
	
	public class MyPanel extends Panel
	{
		public function MyPanel()
		{
			super();
		}
		
		[SkinPart (required="false")]
		public var comboBoxMonth:ComboBox
		
		[SkinPart (required="false")]
		public var comboBoxDay:ComboBox
		
		override protected function partAdded(partName:String, instance:Object):void {
			super.partAdded(partName, instance);
			var monthProvider:ArrayCollection=new ArrayCollection();
			var dayProvider:ArrayCollection=new ArrayCollection();
			
			for(var i:int=1;i<=12;i++){
				monthProvider.addItem(i);
			}
			
			for(var j:int=1;j<=31;j++){
				dayProvider.addItem(j);
			}
			if (instance == comboBoxMonth) {
				comboBoxMonth.dataProvider=monthProvider;
				
			}else if(instance==comboBoxDay){
				comboBoxDay.dataProvider=dayProvider;
			}
		}
		
	}
}
分享到:
评论

相关推荐

    Flex4自定义组件开发.pdf

    Flex4采用了全新的Spark组件架构,与之前的Flex3(Halo组件架构)相比有了很大的改进。Spark架构采用了更为现代的设计模式,如MVC(Model-View-Controller)模式,这使得组件更加模块化、易于维护,并提高了整体性能...

    flex自定义组件介绍

    在Flex 4.5中,开发者需要了解ActionScript 3.0和MXML的基础知识,以及如何使用Spark组件模型来创建组件。自定义组件的前提条件通常包括对Flex SDK的熟悉,对面向对象编程的理解,以及对组件生命周期、样式和事件...

    (十八)Flex4_自定义ActionScript组件

    1. **创建ActionScript类**:首先,你需要创建一个继承自Flex组件基类的ActionScript类,如`spark.components.supportClasses.UIComponent`或`mx.core.UIComponent`。这些基类提供了组件的基本结构和生命周期方法。 ...

    Flex4开发的自定义输入框皮肤组件,代图标

    通过深入理解Spark组件模型和皮肤机制,我们可以创建出满足各种设计需求的自定义组件,提升应用的视觉效果和用户体验。在实际项目中,还应考虑组件的可扩展性、复用性和性能优化,以实现高效且美观的Flex4应用。

    flex4自定义组件皮肤

    - 如果在自定义皮肤中使用了MX组件,可能与Flex4的Spark组件不兼容。因此,描述中提到的“请自己把所有mx组件改成sp组件”,是为了确保在Flex4环境中正确运行。 6. **压缩包内容分析** - 压缩包中的"src"目录可能...

    Flex 自定义组件ImageViewer

    在Flex中,自定义组件是开发者根据项目需求创建的特殊UI元素,可以扩展和定制标准的MX或Spark组件。本示例着重于一个名为“ImageViewer”的自定义组件,这通常是一个用于展示图像并可能包含缩放、平移等交互功能的...

    Flex4权威指南(中文版+英文版+源代码)

    学习如何使用和自定义Spark组件是提升Flex4应用质量的关键。 4. Flex Builder或Flash Builder:这些是Adobe提供的集成开发环境(IDE),用于编写、调试和部署Flex应用。熟悉这些工具的使用能提高开发效率。 5. ...

    flex4学习资料

    资料中可能包含如何创建和自定义Spark组件的教程。 4. **States和Effects**:Flex 4允许开发者轻松管理应用程序的不同状态,如视图状态,以及添加过渡效果。这部分内容可能解释了如何使用states和effects来实现动态...

    Flex4 自定义组件皮肤小结

    在Flex4中,自定义组件皮肤是提升应用界面美观度和用户体验的重要手段。Flex4引入了全新的皮肤架构,使得开发者可以更加灵活地控制组件的外观和交互效果。本篇文章将围绕Flex4自定义组件皮肤进行深入讲解,并结合...

    flex/flash自定义组件(搜索栏)

    3. **封装组件**:将设计和行为组合成一个可重用的组件类,通常继承自Flex的基础UI组件,如`MX:TextInput`或`Spark:TextInput`。 4. **测试和调试**:在Flash或Flex模拟器中测试组件,确保其在不同情况下的行为正确...

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

    1. 组件创建:首先,你需要创建一个新的ActionScript类,继承自Flex的基础组件类,如Spark的SkinnableComponent或MX的Canvas。 2. 组件属性:定义组件的属性,用于设置和获取组件的状态,例如在登录组件中,可能有...

    flex4 Spark Intranet Sample App

    首先,Spark组件集是Flex4的核心特性之一,它提供了一套完全重写且优化的UI组件,相比以前的 Halo 组件,Spark组件在样式、性能和可定制性上有了显著提升。Spark组件的设计理念是组件化和模块化,使得开发者能够更...

    spark skins

    Spark Skin主要是针对Spark组件库中的组件设计的,Spark组件库是Flex 4引入的一个新组件集合,它提供了更现代、更轻量级的界面元素。 标题"spark skins"直接指向了我们讨论的主题,即Spark组件的皮肤。这些皮肤文件...

    流式计算组件Spark Streaming使用

    在实际应用中,Spark Streaming允许用户自定义复杂的数据流处理逻辑,包括但不限于映射、过滤、聚合、连接等操作。高级数据源的使用涉及到特定的数据源库,比如TwitterUtils和KafkaUtils,它们提供了一种简便的方式...

    spark-JDBCRDD源码及自定义JDBCRDD的分区策略

    Spark-JDBCRDD 源码及自定义 JDBCRDD 的分区策略 Spark-JDBCRDD 是 Apache Spark 中的一个重要组件,它提供了将关系型数据库中的数据加载到 Spark 中的能力。JDBCRDD 的核心思想是将数据库中的数据分区,并将每个...

    spark-2.4.7-bin-hadoop2.6.tgz

    - `conf/`:存放配置文件,如`spark-defaults.conf`,用户可以在此自定义Spark的默认配置。 - `jars/`:包含Spark运行所需的JAR文件。 - `lib/`:包含Spark的依赖库。 - `python/`:Python相关的源码和库,支持...

    精讲Flex4组件开发(附源码)

    "精讲Flex4组件开发"的主题深入探讨了Flex4中的组件开发技术,特别是聚焦于Spark组件架构,这是Flex4中引入的一种新的组件模型,旨在提高性能和可扩展性。 Spark组件架构是Flex4中的核心特性之一,它与之前的MX组件...

    spark-assembly-1.5.2-hadoop2.6.0.jar

    《Spark编程核心组件:spark-assembly-1.5.2-hadoop2.6.0.jar详解》 在大数据处理领域,Spark以其高效、易用和灵活性脱颖而出,成为了许多开发者的首选框架。Spark-assembly-1.5.2-hadoop2.6.0.jar是Spark中的一个...

    IK分词器通过spark加载词典,并在spark中使用

    - 加载自定义词典到Spark集群,这可以通过Spark的HDFS接口实现,或者在启动Spark时指定词典路径。 - 对于文本数据,可以使用Spark DataFrame或RDD进行操作,调用UDF进行分词处理。 - 结果可以进一步存储到HDFS、...

    自定义的Alert-Flex4

    Flex 4引入了Spark组件模型,与之前的 Halo组件模型相比,它提供了更强大的样式和皮肤ning能力。这意味着我们可以更容易地改变组件的外观和行为,这正是自定义Alert的核心所在。 1. **自定义组件创建**: - 首先,...

Global site tag (gtag.js) - Google Analytics