- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
绑定也疯狂
通过这本书你能够透彻了解Flex 内部绑定实现的原理,通过了解原理你可以知道工作中如何正确的
使用绑定,要避免哪些陷阱。而后我们在了解原理的基础上进行扩展,讲述一些平时认为不能实现绑定的
解决方案以及某些你从未听说过的绑定方式。最后我们将绑定提升到应用程序架构的层次来提高你的开发
效率,让你知道绑定不仅仅是一个技巧,而是一种能够简化思维的设计模式。
绑定的概念
什么是绑定?
绑定是直接被Flex框架支持的一种同步机制。绑定由3 部分组成:绑定源、观察机制、目标。当源
发生更改时,源广播更改事件,通过观察机制执行代码更新目标。如图:
绑定源发出更改事件 观察机制收到事件执行代码
目标被更新
这个过程可以用事件完成,但使用绑定的开发效率要高于纯事件。原因如下:
1. 绑定机制直接被编译器支持,当一个源使用元标签[Bindable]注册后,编译器会自动生成绑定
代码,这些代码涉及到观察绑定源变化并且更改绑定目标整个过程。
2. 内置观察器能能够处理绑定链等复杂的逻辑,Flex组件和高级数据集合预置了绑定功能。
3. mxml 直接支持绑定,能够在更高级别生成代码,以致不用书写一行as 代码就实现了绑定。
绑定机制虽然提供便利,但不缺乏灵活性,绑定源支持多种数据类型,事件可以选择自动派发也可以
选择手动派发,内置观察器有多个并且运行时可以进行干预;目标可以指定也可以不指定。绑定机制属于
Flex框架中,不能用于Flash工程,纯as 工程要需导入framework.swc。
绑定的本质
绑定是一个框架,其本质是事件,广义的绑定应理解为“建立绑定源变化的观察机制”,其手段可以
创建观察器、动态函数、绑定链或绑定树实现寄生,也可以是直接使用事件或通过代理对象实现。绑定的
追求的是通过重用提高编程效率,绑定机制创建了一个同步概念并且得到sdk支持,我们可以重新设计工
程蓝图,以绑定为基础简化项目架构,在实际工作中绑定的手段也是多样化的,但绑定的原理是不变的,
创建绑定的方式有多种,下面我们来看看如果创建绑定。
创建绑定
可以使用mxml 创建绑定也可以使用as3 创建绑定,mxml 最终会编译为as3 代码,使用as3 创建绑
定能够有利于了解内部工作机制,还能通过原理灵活进行扩充,因此本章节重点讲述使用as3 创建绑定。
使用as3 创建绑定
抛开绑定带来的令人眼花缭乱形式上的表现,从问题的本质出发,我们使用as3 来创建一个绑定,来
看看从源的变化到目标被更新这一过程是如何运转的,请看下面的代码:
?xml version=1.0 encoding=utf-8?
s:Application xmlns:fx=/mxml/2009 xmlns:s=library://n
/flex/spark xmlns:mx=library:///flex/mx minWidth=9
55 minHeight=600
s:layout
s:BasicLayout/
/s:layout
fx:Declarations
!-- 将非可视元素(例如服务、值对象)放在此处 --
/fx:Declarations
fx:Script
![CDATA[
import mx.events.PropertyChangeEvent;
import mx.binding.utils.ChangeWatcher;
[Bindable]
public var a:Number;
private var watcher:ChangeWatcher=ChangeWatcher.watch(this,a,watc
hFun);
private function watchFun(event:PropertyChangeEvent):void
{
myText.text=String(event.newValue);
}
public
原创力文档


文档评论(0)