首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex DeferredInstanceFromFunction 应用

2012-11-23 
flex DeferredInstanceFromFunction使用flex DeferredInstanceFromFunction官网对这个类的介绍:一个延迟实

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 相同的自动强操作规则。

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

?

<?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";//状态1var _item :AddItems = new AddItems();_item.itemsFactory = new DeferredInstanceFromFunction(createButtonGroup);//createuttonGroup 添加控件_state1.overrides.push(_item); _state2 = new State();_state2.name = "demo2";////状态2states.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

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

热点排行