as3.0学习笔记之绑定与组件生命周期
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习笔记
1.Flex数据绑定的四种方式—2013.5.9
一、"{}"绑定表达式
Flex开发中,"{}"绑定表达式的应用是最为常见的,简单、方便。好比 中的"<%%>"一样的功效。这里我就简单介绍下,在Flex下怎么使用"{}"绑定表达式来绑定数据。如有这样一个简单的需求,我们定义一个变量,通过"{}"绑定表达式将变量的值绑定到文本框或是按扭等类似的UI组件上,变量定义如下:
简洁、简单、方便且适用。OK,已经学到手了,那下面继续看看另一种绑定使用方式--绑定方法返回值。例如需要将一个方法的返回值通过"{}"绑定表达式进行Flex数据绑定,让其在UI组件上呈现该怎么做呢?如下方法定义:
Private function BindText():String{Return “OK” ;}
如上便完成了对方法的绑定,既将BindText()方法的值绑定在了Label组件上。
二、[Bindable]绑定符号
[Bindable]绑定符号在上面就已经出现过了,他的使用和作用也很容易掌握。如上示例,我们的目的是将定义的变量值绑定在UI组件上,如果要实现这个功能,直接将定义的变量通过"{}"绑定表达式进行Flex数据绑定是不能完成功能的,我们必须为所定义的变量标记[Bindable]。在Flex中,只有标记有[Bindable]的数据源才能进行Flex数据绑定(函数除外,上面示例中也证实了这一点),当然也可以是其他的数据源(xml,数据库,文件等不同地方不同类型的数据源)。
1、[Bindable]标签用于函数时,只能在setter和getter方式定义的函数前使用,这种绑定称之为函数级绑定。
2、[Bindable]标签用于公有类时,这个类的所有公共变量,setter和getter方式定义的函数都可以用于绑定。这种绑定称为对象级绑定。
三、
如上定义的数据源,通过
txtName.text"/> txtAuthor.text"/> 四、BindingUtils与动态绑定 在Flex数据绑定中,动态绑定主要是通过BindingUtils类提供的两个静态方法来实现。该类位于包mx.binding.utils下,它提供了bindProperty()和bindSetter()两个静态方法来实现数据的动态绑定。 bindProperty()方法根据名称就可以看出大概意思,绑定属性。那实际开发中我们应该怎么应用他呢?其实很简单,一句话概括就是:将xx的YY属性绑定到AA的BB属性。更清楚的理解这句话的意思见下面代码片段:BindingUtils.bindProperty(nameText,"text",btn,"label"); bindSetter()方法的使用也很简单,该Flex数据绑定方法绑定数据需要与setter 类似的方法结合,将外部传递进去的参数进行方法委托实现数据的动态绑定,拿上面将按扭显示值绑定到文本输入组件的值的示例来说,只需要定义一个setter 的方法,该bindProperty()方法为bindSetter()方法既可,详细见下面代码片段:BindingUtils.bindSetter(bindText,btn,"label"); Private functionbindText(text:String):void { Text.text=text;} 2、Flex Application初始化顺序—2013.5.14 Preinitialize 在所有的初始化之前触发,没有子组件的定义,但是可以引用组件的变量Initialize 当所有子组件生成完成后触发,在这个时间点还没有组件被渲染出来creationComplete 组件定义完成并已经在显示列表 applicationComplete 所有的组件初始化完成并显示 通常, Application对象创建时, 发生如下事件: 1. 实例化Application对象 2. 初始化Application.systemManager 3. Application在初始化过程之前, 派发预初始化事件. 4. 调用createChild(). 此时, 所有应用组件被创建, 所有组件的createChild()被调用. 5. Application派发初始化事件, 表明所有的组件初始化完毕. 6. 派发creationComplete事件 7. Application对象添加到显示列表中 8. 派发applicationComplete事件