`
fireflylover
  • 浏览: 107794 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Flex事件讲解(三)

    博客分类:
  • FLEX
阅读更多

三.绑定机制

在我们了解了事件机制后,那么理解绑定就不难了。绑定其实也是事件机制的运用

1. 什么是绑定
绑定的原理就是事件,在被绑定的对象上增加了改变事件的监听,一旦某个被绑定对象改变后,就会分发一个“propertyChange”事件(默认的,也可以改变成自己定义的事件),在其他组件中,会有propertyChange的事件监听,当捕捉到该事件后,则会去更新组件的属性并显示。

绑定的作用在于,将Flex中的变量、类、方法等与组件的值进行绑定。例如,一个变量如果被绑定后,那么引用该变量的组件的相关属性也会发生改变。我们用一个实例来表示

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:comp
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable]
private var isSelected:Boolean;
private function clickHandler(e:MouseEvent){
//Alert.show(e.currentTarget.toString());
isSelected=isSelected?false:true; //这句话的意思是如果isSelected为true,改变它为false,如果它为false,改变它为true;
Alert.show(isSelected.toString());
}
]]>
</mx:Script>
<mx:Button id="testBtn" click="clickHandler(event)" label="测试" />
<mx:CheckBox x="60" selected="{isSelected}" />
</mx:Application>

 

上述程序的效果就是,当点击button时,button不是直接改变checkbox的选中状态,而是改变isSelected这个变量,由于isSelected是被绑定了的,那么会关联的改变CheckBox的选中状态。

这样看起来有些多此一举,完全可以直接改变checkbox的selected属性,我只是为了演示一下效果。如果说你的checkbox是动态构造的上百个,你不会去一个个的改变他吧。

因此,我们多数会将一个数据源进行绑定声明,这样引用了这个数据源的控件,比如datagrid,在数据源发生了改变时,即使你不重新设置dataProvider,列表的数据也会刷新。当然,还有很多应用等待你去尝试。

如果这个代码中取消了[Bindable]的声明,会怎么样?isSelected不会改变了吗?

isSelected会改变,我们alert出来的结果也会显示结果改变了,但是checkbox的选择状态不会改变,因为当一个组件由创建到最终显示出来时是经过很多方法的,比如addChild,commitProperties,updateDisplayList等,updataDisplayList则是类似刷新显示效果一样的方法。

仅仅改变属性,而不去更新显示效果那么组件不会因为属性的改变而发生任何变化。

绑定的原理也是利用的事件分发。更复杂的绑定有待你去自己发现了

四. 自定义事件的分发

这部分就不长篇大论了,因为各位应该已经掌握了事件的原理,因此贴出演示源码,并进行些简单的解释。

1. 自定义事件 components/MyEventTest.as
package components
{
import mx.events.FlexEvent;
public class MyEventTest extends FlexEvent
{
public static const ONCHANGE:String = "onChange";
public var eventInfo:String; //自定义的事件信息
public function MyEventTest(s:String){
super(s); //如果在构造时不设bubbles,默认是false,也就是不能传递的。
eventInfo="这个事件是:"+s;
}
}
}

2. 自定义组件 components/ComponentForEvent.as
package components
{
import flash.events.EventDispatcher;
//这个就是声明事件注册通道的方法了。name是事件对应的名称,也就是之前提到的type。Type是该事件的类
[Event(name="onChange", type="components.MyEventTest")]
public class ComponentForEvent extends EventDispatcher
{
private var name:String;
public function changeName(newName:String){
this.name=newName;
dispatchEvent(new MyEventTest(MyEventTest.ONCHANGE) );
}
}
}

3. App.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:comp
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function changeName(){
cfe.changeName("新名称");
}
]]>
</mx:Script>
<mx:Button id="testBtn" click=" changeName ()" label="测试" />
<components:ComponentForEvent
id="cfe" />
</mx:Application>

分享到:
评论

相关推荐

    关于flex事件的讲解

    关于flex事件的讲解 一. 引 很多新人对Flex的事件机制都不太熟悉,在使用过程中难免会出现各种问题,这是一个非常普遍的问题,为了更快更好的帮助大家,将介绍一下Flex中事件的各种机制和用法。 Flex的精髓之一...

    关于flex事件的讲解.rar

    讲解了flex的事件机制,并给出了具体的应用讲解和例子,对学习者理解flex比较有帮助

    flex4经典教程详细讲解

    详细讲解了flex4 教程包括数据库连接,从简单到入门

    flex 入门讲解 ppt

    flex 入门讲解的几个ppt 还有flex和java进行通信的网页

    flex 事件流原理

    很多新人对Flex的事件机制都不太熟悉,在使用过程中难免会出现各种问题,这是一个非常普遍的问题,为了更快更好的帮助大家,将介绍一下Flex中事件的各种机制和用法。 Flex的精髓之一就是事件和绑定机制,了解之后,...

    flex事件讲解

    博文链接:https://seya.iteye.com/blog/236698

    flex 事件与自定义事件

    如何接收事件?如何做到AS3.0的标准事件编程? 类似JAVA的监听或观察者模式 Event改变的部分很多,正在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。

    flex讲解入门技术

    flex技术的讲解,初步入门,让你喜欢上flex

    flex控件讲解

    flex控件操作的讲解,轻轻松松学会使用flex控件

    深入浅出讲解flex中的事件机制

    此往篇文档非常清淅的讲解在flex中的事件机制,告诉你target与currenttarget的区别

    flex 开发讲解,开发案例

    flex 开发详细文档,开发案例-----------

    Flex入门PPT

    Flex基础应用 Flex基础应用 Flex基础应用 Flex基础应用 Flex基础应用

    flex 第一步全部源码 实例源码

    内容包括:Flex简介、Flex的安装和开发环境的建立、MXML 语法简介、使用容器控制界面布局、使用组件处理数据和交互、使用行为对象和动画效果、ActionScript 3.0编程知识、Flex的事件机制、数据绑定、组件的使用、...

    04flex布局讲解.ppt

    微信小程序基础精讲及项目实战视频课程(移动商城)课件资料

    flex初级讲解

    教会您flex的初级使用以及flex的一些概念!

    Flex动画效果教程

    Flex 动画效果 Flex教程 Flex特效 全面讲解flex特效制作,特别是自定义特效

    Flex详细文档.pdf

    本文档包含了详细的Flex技术讲解,对Flex入门的学习者用处很大。

    flex+spring flex整合

    flex和spring整合过程讲解,配置举例,详细明了。。。

Global site tag (gtag.js) - Google Analytics