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

flex DeferredInstanceFromFunction 使用

 
阅读更多

flex DeferredInstanceFromFunction

官网对这个类的介绍:

一个延迟实例工厂,它使用生成函数创建所需对象实例。应用程序使用 getInstance() 方法在首次需要对象实例时创建该实例,随后获取对该对象的引用。

api上这么说,看来这个是单例的。

我前一篇文章http://demojava.iteye.com/blog/1175758 上介绍了一个as中自定义组件的方法,和这个 DeferredInstanceFromFunction  有什么联系呢?笔者看源码发现关系了:

 

mx.core.DeferredInstanceFromFunction 实现了 ITransientDeferredInstance 接口 而ITransientDeferredInstance 接口继承了 IDeferredInstance 关系清楚了

官网对这个 类的介绍是:

ITransientDeferredInstance 接口扩展 IDeferredInstance,并可以使用户将延迟的实例工厂重置为其初始状态(通常这意味着释放对组件的任何已知引用,如将引用该实例的所属文档属性设置为 null)。如果所需的行为是当某个状态不再应用时破坏某个状态特定的元素,则 AddItems 状态覆盖会利用此附加的功能。Flex 编译器使用与 IDeferredInstance 相同的自动强操作规则。

【初始状态】我就不明白了参考一些方法: 

 

另请参见

mx.states.AddItems
mx.core.IDeferredInstance

不懂难道控制状态的?而这个 AddItems 是来之 mx.states.AddItems 看来想那么回事。。。

 

下面上代码说明他用途:

f4中自定义组件 Demo.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx"
		 creationComplete="creationCompleteHandler(event)">
	
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			import mx.states.AddItems;
			import mx.states.SetProperty;
			import mx.states.State;
			
			import spark.components.HGroup;
			import spark.layouts.VerticalAlign;
			private var _state2 :State=null;
			private var _group:HGroup=null;
			protected function creationCompleteHandler(event:FlexEvent):void
			{
				var _state1 :State = new State();
				_state1.name = "demo1";//状态1
				var _item       :AddItems = new AddItems();
				_item.itemsFactory = new DeferredInstanceFromFunction(createButtonGroup);//createuttonGroup 添加控件
				_state1.overrides.push(_item);
				
				 _state2 = new State();
				_state2.name = "demo2";////状态2
				states.push(_state1, _state2);// 其中 states 是UIComponent 的属性
			}
			
			protected function createButtonGroup():HGroup
			{
				_group= new HGroup();
				_group.percentWidth = 100;
				_group.height = 50;
				_group.verticalAlign = VerticalAlign.MIDDLE;
				
				var _array       :Array = ["Button A", "Button B"];
				
				for(var i:int = 0; i < _array.length; ++i)
				{
					var _btn         :Button = new Button();
					_btn.name = "btn" + String(_array[i]);
					_btn.label = _array[i];
					_group.addElement(_btn);
				}
				
				return _group;                     
			}			
			
			protected function btn1_clickHandler(event:MouseEvent):void
			{
				currentState = "demo1";
			}
			
			protected function btn2_clickHandler(event:MouseEvent):void
			{
				currentState = "demo2";
			}
			
		]]>
	</fx:Script>
	
	<s:layout>
		<s:VerticalLayout />
	</s:layout>
	
	<s:states>
		<s:State name="normal"/>
	</s:states>

	<s:Button id="btn1" label="状态1"
			  click="btn1_clickHandler(event)" />
	<s:Button id="btn2" label="状态2"
			  click="btn2_clickHandler(event)" /> 
</s:Group>


 点击状态1 转换到状态1 点击状态2 切换到状态2

看来这样也是一种 状态切换的应用,效率高些罢了。 

分享到:
评论

相关推荐

    flex3使用说明

    Flex3 使用说明 Flex3 是一个高效、免费的开源框架,用于构建具有表现力的 Web 应用程序。Flex3 可以与 Java 后台进行通信,并与 FusionCharts 结合使用,实现数据可视化。下面是 Flex3 的详细介绍: 一、Flex ...

    Flex万年历记事本_flex源码

    "Flex万年历记事本"是一个使用Flex技术实现的项目,它结合了日历功能和记事本特性,为用户提供了一种方便的方式来管理和记录日常生活中的事务。 在Flex源码中,我们可以期待看到以下几个关键知识点: 1. **MXML与...

    Flex4权威指南+随书源代码+Flexbuild使用工具

    2. Flexbuild使用工具适用于4.6之前版本 电子书内容概括: 1. 理解RIA 2. 开始 3. 布局界面 4. 使用简单的控件 5. 处理事件 6. 使用远程XML数据 7. 创建类 8. 使用数据绑定和集合 9. 将应用程序拆分成组件 10. 使用...

    Java+flex使用dom4j读写xml

    这个小例子是使用Java作为服务端、Flex做前台,对一个xml文件的读取和写入。 环境:MyEclipse6.0.1+Flex3插件版,jdk1.6,tomcat6.0,dom4j1.6.1,lcds.war, 使用技术:1.Java+flex,及其对象的转换。 2.Java方面...

    css3_flex使用示例

    本资源“css3_flex使用示例”包含了一些关于CSS3 Flexbox的实际应用案例,帮助开发者深入理解和掌握这一强大的布局工具。 1. **Flex容器与项目** - **flex容器**:设置`display`属性为`flex`或`inline-flex`的元素...

    最全的flex布局使用大全

    flex布局使用大全

    flex与jsp结合使用

    Flex 和 JSP 结合使用是一种常见的前端与后端交互方式,它允许开发人员利用 Flex 的富互联网应用程序(RIA)功能和 JSP 的服务器端处理能力,构建动态且交互性强的Web应用。以下是对如何结合使用 Flex 和 JSP 的详细...

    如何在Flex中使用profile的教程

    ### 如何在Flex中使用Profile的教程 #### Flex性能优化:使用Adobe Flex Profiler Adobe Flex Profiler是一款功能强大的工具,可以帮助开发者识别Flex应用程序中的性能瓶颈或内存泄漏问题。通过本教程,我们将详细...

    flex 官方文档 中文教程

    Flex是基于ActionScript 3.0和Flash Player或Adobe AIR运行时的开发框架,允许开发者使用MXML和ActionScript创建动态、交互式的Web应用。它提供了丰富的UI组件库,能够构建功能强大的图形用户界面。 2. **MXML语言...

    记事万年历flex源码

    通过深入分析这些文件,开发者可以学习到如何使用Flex来构建一个功能齐全且具有视觉吸引力的日历应用。 综上所述,"记事万年历flex源码"是一个展示Flex技术在构建富互联网应用中的实际应用的例子,它融合了UI设计、...

    Flex Chart 使用教程(含源代码)

    "FlexChart使用教程.doc"可能包含详细的步骤说明和代码示例,教你如何创建、配置和定制Flex Chart。而"FlexDemo"可能是一个实际的Flex项目,包含完整的MXML和ActionScript代码,供学习者参考和运行。 五、进阶技巧 ...

    flex 使用swc 包

    标题"flex使用swc包"指的是在Flex开发过程中如何利用SWC文件。SWC文件通常包含以下内容: 1. **ActionScript类**:这些类文件是用ActionScript编写的,可以是自定义的类、接口或抽象类,提供了功能丰富的API供其他...

    struts flex 结合使用

    Struts Flex结合使用是一种在Java Web开发中创建富互联网应用程序(RIA)的解决方案。Struts是Apache软件基金会下的一个开源MVC框架,主要用于构建企业级的Web应用,而Flex是Adobe开发的一种基于ActionScript的RIA...

    flex3使用教程

    该文档介绍了flex的基本使用情况,包括安装,基本语法,与struts的结合,怎样调用后台数据,特效的使用,fusioncharts的使用等

    flex/bison c++的例子

    flex bison使用c++方式实现的例子 flex bison使用c++方式实现的例子

    使用 apache flex mavenizer 将flex sdk 4.6 maven化

    Apache Flex Mavenizer是一个工具,主要用于将Adobe Flex SDK 4.6与Maven构建系统整合,以便于在Java开发环境中更方便地管理和使用Flex资源。在本文中,我们将深入探讨如何利用这个工具,以及它在现代开发流程中的...

    Windows下词法分析分析器Flex和语法分析器bison的使用说明.pdf

    《Windows下词法分析分析器Flex和语法分析器Bison的使用详解》 在计算机科学领域,词法分析和语法分析是编译器设计的重要环节。Flex和Bison是两个强大的开源工具,分别用于词法分析和语法分析,尤其在Windows环境下...

    Flex与Bison使用教程

    在Windows环境下,可以使用Cygwin(***)这样的工具来提供类似UNIX的环境,从而使用flex和bison。CMakefile和Makefile是用于项目构建的文件,它们可以用来编译使用flex和bison生成的源代码。 Flex工具使用正则...

    词法分析自动生成工具flex

    Flex(Fast Lexical Analyzer Generator)是一款广泛使用的开源工具,用于自动生成词法分析器,它能够根据用户定义的规则解析输入文本,并识别出相应的模式。这个压缩包包含了一系列与Flex相关的文件,让我们逐一...

Global site tag (gtag.js) - Google Analytics