- 浏览: 807095 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
ActionScript遍历绑定(BindProperty,BindSetter,ChangeWatcher)
- 博客分类:
- Flex/BlazeDS
注意: 为防止内存益处,记得调用watcherInstance.unwatch();
在MXML标签中很容易将一个组件的某个属性绑定到某个变量上,
如<mx:TextInput text={person.name}>,其中person定义为bindable。
但是如果不用mxml标签,而只在actionscipt代码里面如何实现类似的绑定呢,即如何将一个变量绑定到另一个变量上,当原变量发生变化时,Flex自动将原变量的值拷贝到目标变量上,当然你可以说自己写代码赋值,但这不是绑定,下面要讨论的是自动绑定相关的内容。
在ActionScript中,使用mx.binding.utils.BindingUtil类完成数据绑定。BindingUtil提供了两个静态方法分别完成绑定属性(bindProperty方法)和绑定方法(bindSetter方法)。
bindProperty()
方法签名
public static function bindProperty(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher
bindProperty把对象host的属性或属性链的值(由chain参数说明)绑定到对象site的公共属性prop上。更准确地说,Flex将监控host对象中由chain参数声明的公共属性或属性链,当这些属性发生变化时,将会复制新值到site对象的prop属性上。
bindSetter()方法
方法签名
public static function bindSetter(setter:Function, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher
bindSetter()与bindProperty()方法类似,不同的是把对象host的属性或属性链的值(由chain参数说明)传递给setter方法,由setter方法返回最终结果。setter()方法事实上就与绑定相关的事件侦听器方法。bindSetter()方法提供了更多的空间,开发者能够在绑定发生时进一步的处理数据,而不仅仅是单纯的绑定属性。
ChangeWatcher类
bindProperty()方法和bindSetter()都返回ChangeWatcher类实例。类如其名,mx.binding.utils.ChangeWatcher类负责监控绑定数据源的属性或属性链,当它们发生变化时获取通知,调用事件侦听器。关于ChangeWatcher类的具体说明请参考"ActionScript 3.0语言参考"。
在代码13-9中,应用初始化时调用initBinding()方法绑定了txtSrc.text(源)和txtDest.text(目标),也获取了该绑定的ChangeWaatcher实例cw。cw.setHandler方法修改了绑定事件发生后的侦听器方法,也就是说我们用自己的watcherListner()方法替换了bindProperty()默认的事件处理方法。
watcherListner()从cw.getValue()获取所监控属性或属性链的更新数据,并复制到目标对象(txtDest.text)上。一切都与绑定的默认行为一样。只不过我们埋下了一个圣诞彩蛋,如果txtSrc.text的值为"unbind"的时候,就利用cw.unwatch()解除绑定。
代码13-9:ChangeWatcher类的样例
该样例的运行结果如图13-3所示,在"数据源"中输入unbind后,绑定关系就被解除了。
属性链
数据绑定中很重要的一环就是指定监听哪些数据源。Flex不仅可以监控单一的属性,也能够监控属性链。
在下面这个例子中,属性链为book.name,属性链中的任何一环发生变化,都会调度绑定的事件侦听器方法。
BindingUtils.bindProperty(txtDest,"text",,this,["book","name"]);
使用MXML也能够达到同样的目的:
<mx:Text id="txtDest" text="{book.name }"/>
案例
在MXML标签中很容易将一个组件的某个属性绑定到某个变量上,
如<mx:TextInput text={person.name}>,其中person定义为bindable。
但是如果不用mxml标签,而只在actionscipt代码里面如何实现类似的绑定呢,即如何将一个变量绑定到另一个变量上,当原变量发生变化时,Flex自动将原变量的值拷贝到目标变量上,当然你可以说自己写代码赋值,但这不是绑定,下面要讨论的是自动绑定相关的内容。
在ActionScript中,使用mx.binding.utils.BindingUtil类完成数据绑定。BindingUtil提供了两个静态方法分别完成绑定属性(bindProperty方法)和绑定方法(bindSetter方法)。
bindProperty()
方法签名
public static function bindProperty(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher
bindProperty把对象host的属性或属性链的值(由chain参数说明)绑定到对象site的公共属性prop上。更准确地说,Flex将监控host对象中由chain参数声明的公共属性或属性链,当这些属性发生变化时,将会复制新值到site对象的prop属性上。
bindSetter()方法
方法签名
public static function bindSetter(setter:Function, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher
bindSetter()与bindProperty()方法类似,不同的是把对象host的属性或属性链的值(由chain参数说明)传递给setter方法,由setter方法返回最终结果。setter()方法事实上就与绑定相关的事件侦听器方法。bindSetter()方法提供了更多的空间,开发者能够在绑定发生时进一步的处理数据,而不仅仅是单纯的绑定属性。
ChangeWatcher类
bindProperty()方法和bindSetter()都返回ChangeWatcher类实例。类如其名,mx.binding.utils.ChangeWatcher类负责监控绑定数据源的属性或属性链,当它们发生变化时获取通知,调用事件侦听器。关于ChangeWatcher类的具体说明请参考"ActionScript 3.0语言参考"。
在代码13-9中,应用初始化时调用initBinding()方法绑定了txtSrc.text(源)和txtDest.text(目标),也获取了该绑定的ChangeWaatcher实例cw。cw.setHandler方法修改了绑定事件发生后的侦听器方法,也就是说我们用自己的watcherListner()方法替换了bindProperty()默认的事件处理方法。
watcherListner()从cw.getValue()获取所监控属性或属性链的更新数据,并复制到目标对象(txtDest.text)上。一切都与绑定的默认行为一样。只不过我们埋下了一个圣诞彩蛋,如果txtSrc.text的值为"unbind"的时候,就利用cw.unwatch()解除绑定。
代码13-9:ChangeWatcher类的样例
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="initBinding()"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.binding.utils.*; private var cw:ChangeWatcher; private function initBinding():void{cw=BindingUtils.bindProperty(txtDest,"text",txtSrc,"text"); cw.setHandler(watcherListner);} private function watcherListner(event:Event):void{ if(txtSrc.text=="unbind"){ txtDest.text=cw.getValue().toString(); cw.unwatch();} else{ txtDest.text=cw.getValue().toString();}}]]></mx:Script> <mx:Form><mx:FormItem label="数据源"> <mx:TextInput id="txtSrc"/> </mx:FormItem> <mx:FormItem label="绑定目标"> <mx:TextInput id="txtDest"/> </mx:FormItem> </mx:Form> </mx:Application>
该样例的运行结果如图13-3所示,在"数据源"中输入unbind后,绑定关系就被解除了。
属性链
数据绑定中很重要的一环就是指定监听哪些数据源。Flex不仅可以监控单一的属性,也能够监控属性链。
在下面这个例子中,属性链为book.name,属性链中的任何一环发生变化,都会调度绑定的事件侦听器方法。
BindingUtils.bindProperty(txtDest,"text",,this,["book","name"]);
使用MXML也能够达到同样的目的:
<mx:Text id="txtDest" text="{book.name }"/>
案例
package { class Model { //i shall leave the constructor to you [Bindable] public var totalItems:Number; } } public function init():void{ //this is useful if you want to unwatch or stop detecting changes to this variable //ofcourse init function has to be called model = new Model(); watcherInstance = ChangeWatcher.watch(model,["totalItems"],itemsChanged); } public function itemsChanged(event:PropertyChangeEvent):void{ //this function is called as soon as value of totalItem changes. //if you want to stop watching this variable. watcherInstance.unwatch(); }
发表评论
-
Panel高度为0但里面的组件依旧显示
2013-04-24 14:34 1122解决办法: 把Panel中的内容组件用<s:Scroll ... -
约束布局constraint layout
2013-03-01 14:02 1868约束布局constraint layout要点: 1)只有支持 ... -
根据屏幕分辨率动态调整组件大小
2013-02-22 17:34 1561将代码写在组件的preInitialize事件监听器里面 简化 ... -
设置Flex组件的尺寸大小
2013-02-21 16:17 1584深红色部分标明了需注意的地方 另外要注意组件和容器的生命周 ... -
Flex minWidth minHeight
2013-02-04 16:17 1568minWidth 这个值并不是给组件自己用的,而是给组件的父容 ... -
Flex程序适应不同屏幕尺寸和分辨率(滚动条)
2013-01-31 15:02 9888FlashBuilder编译后自动生成的xx.html里面定义 ... -
FlexContext, FlexClient,FlexSession
2013-01-15 15:05 2430使用了BlazeDS后,可以从FlexContext中获取一系 ... -
防止RemoteObject批处理AMF消息
2013-01-14 17:01 1341问题描述: 如果你在短时内调用同一个java对象上的两个方法, ... -
自动检测http和https的RemoteObject
2013-01-13 10:30 1842package { import util.Bro ... -
flex浏览器相关辅组类
2012-12-06 13:39 1290package util { import flash. ... -
Flex可变参数带来的问题
2012-12-06 13:34 1532当你在flex的方法中用了可变参数后,你会发现这些参数传到ja ... -
flex如何通过类名称实例化对象
2012-11-30 13:52 2777Getting the class from an objec ... -
flexlib的treeGrid用法
2012-11-30 13:46 1331为了使用treeGrid,通常你需要定义自己的DataDesc ... -
自定义flex tree的DataDescriptor
2012-11-30 13:42 1449public class EnvironmentDataDes ... -
关于Boolean类型在flex与java中间传递的问题
2012-11-30 13:38 1291/** *为简化,只列举两个字段 */ publi ... -
给Flex的Tree赋值方式(XML和ArrayCollection)
2012-11-30 09:33 40651)方式一,mxml内嵌xml数据赋值方式,Embedded ... -
Custom Alert
2012-11-26 19:21 0<?xml version="1.0&qu ... -
Flex服务端分页
2012-11-14 17:00 1094Structure: model event ... -
Flex可携带数据的Aler组件(DataCarriableAlert)
2012-11-14 16:52 1373package component.alert { ... -
映射flex类到java内部类
2012-11-14 16:05 1218java端 public class Person{ p ...
相关推荐
在ActionScript 3(AS3)中,遍历文件夹是一项基本操作,它允许开发者访问用户的文件系统,读取或处理指定目录中的文件和子文件夹。这项技术在开发涉及文件交互的应用,如图片浏览器、文件管理器或者数据导入导出...
3. **ActionScript中的`BindingUtils`方法**:这种方式允许在运行时动态地创建数据绑定,适用于需要根据程序运行状态动态调整绑定逻辑的情况。例如: ```actionscript BindingUtils.bindProperty(myText, "text", ...
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
第1篇ActionScript3.0语言基础 第1章ActionScript3.0概述 2 1.1ActionScript概述 2 1.1.1ActionScript环境 2 1.1.2ActionScript3.0特性 3 1.1.3ActionScript3.0代码组织 5 1.2ActionScript3.0API概览 5 1.3小结 8 第...
《Flash ActionScript 2.0 语言参考》是学习和掌握Flash编程不可或缺的资源,尤其对于初学者和希望深入理解ActionScript的开发者来说,它提供了详尽的语法和功能介绍。ActionScript是Adobe Flash平台上用于创建交互...
ActionScript 基础知识点总结 ActionScript 是 Flash 内置的编程语言,用它为动画编程,可以实现各种动画特效、对影片的良好控制、强大的人机交互以及与网络服务器的交互功能。ActionScript 是一门吸收了 C++、Java...
《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...
《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...
2. 类型优化:静态类型和早期绑定使得ActionScript 3.0比2.0更快,尤其在处理大量数据或复杂计算时。 五、ActionScript 3.0 应用场景 1. 网页游戏:ActionScript 3.0是开发互动游戏的常用工具,利用其动画控制和...
5. **数据绑定**:ACTIONSCRIPT 3.0组件支持数据绑定,这意味着组件的属性可以直接与数据源关联,当数据源发生变化时,组件会自动更新。这对于创建动态和响应式的用户界面非常有用。 6. **自定义组件**:如果你需要...
在Flex中,数据绑定是通过MXML或ActionScript来实现的。下面将详细介绍这一关键知识点: 1. MXML数据绑定: 在MXML中,我们可以通过`{}`符号来声明数据绑定。例如,一个`Label`组件的`text`属性可以绑定到某个变量...
### ActionScript基础教程知识点解析 #### 一、ActionScript概览与基本语法 ActionScript是一种强大的脚本语言,主要用于Adobe Flash平台,使开发者能够创建动态交互式内容、游戏和应用程序。ActionScript的发展...
ActionScript 3.0是Adobe Flash Professional和Flex SDK中用于创建富互联网应用程序(RIA)的主要编程语言。在“ActionScript 3.0动态绘制正弦曲线”这个项目中,开发者利用了AS3的强大功能来创建可视化图形,特别是...
ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用程序(RIA)以及动画。在“ActionScript开发技术大全”这个主题中,我们...
3. 在MXML中直接支持绑定,使得开发者能够在高级别上操作,甚至不需要编写任何ActionScript代码就能完成数据绑定,这在开发中大大简化了代码量。 虽然绑定机制提供了便利和效率,但Flex框架中的绑定机制并不限制...
"LayaAir IDE"扩展提供代码提示、语法高亮和编译功能,"AS3 & MXML"扩展则用于ActionScript的语法支持,而"Debugger for Chrome"扩展允许我们在Chrome浏览器中直接调试我们的游戏。 在“LayaAir-ActionScript-Debug...
ActionScript 2.0 是 Adobe Flash 平台中用于创建交互式内容的主要脚本语言。在 Flash 中,ActionScript 允许开发者编写控制动画、处理用户输入、与服务器通信等功能的代码。下面是关于 ActionScript 2.0 中变量、...
ActionScript是一种基于ECMAScript规范的编程语言,主要用于开发Adobe Flash平台上的交互式内容,如网页游戏、动画和应用程序。这个“Actionscript中文帮助文档”是开发者在学习和使用ActionScript 3.0时的重要参考...
例如,使用for循环遍历数组: ``` for (var i:uint = 0; i ; i++) { trace(array[i]); } ``` 3. 条件语句:AS3.0支持if...else、switch等条件判断。如: ``` if (score > 90) { trace("优秀"); } else if ...
Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...