Flex的事件教程
作者:r.Zhan
前言:flex是面向组件开发的,侧重于实现人机交互的程序设计方法。实际上,正是因为其强大的事件机制,我们才能开发出令人惊艳的表现层页面。以下是根据我自己的理解写的一个教程,可能有不完善的地方,欢迎大家讨论。
什么是事件?
百度百科是这样解释的:是法律事实的一种。是指与当事人意志无关的那些客观现象,即这些事实的出现与否,是当事人无法预见或控制的。
我理解的事件就是发生的一些事情。比如刮风、下雨、打雷;比如吃饭、睡觉、工作等等。在flex中,事件是确定计算机执行哪些指令以及何时执行的机制。
本质上,“事件”就是所发生的、ActionScript 能够识别并可响应的事情。通俗点讲,你要让计算机干活,干什么活,什么时候开始干活,就得对计算机做些事情,或者它自己对自己做些事情,这个事情就是事件。当然,你做的事情计算机一定要能够识别。你可以敲键盘,可以按鼠标,可以扫描文件。你还可以设置让它杀完毒之后自动关机。但是,你不能对着电脑说:hi,你半个小时之后关机。这样,它肯定不知道你要干什么。因为它不能识别你所说的关机指令,或者说,它没有注册对你叫“半个小时之后关机”这个事件的响应。
什么叫事件对象?
事件是对事件对象的一种抽象。我们不会傻傻地跟别人说:事件发生了。我们通常都会说:XX事件发生了。XX事件就是事件的一个具体实现。下面这个例子很重要,它会涉及到这个教程里面的很多概念,请务必注意:今天下午丁姐去小贩那里买苦瓜就是买菜事件的一个事件对象。在flex里面,大多数组件都能产生事件。但是,只有某个组件对象在某时刻产生的事件才能叫事件对象。
什么叫事件侦听器?(事件处理程序)
就是说事件对象产生了,有人接受到这个事件对象,并作出了相应的响应。比如说,今天下午下雨这件事发生,我接受到这件事,就去收衣服。收衣服就是我对下雨这个事件对象的响应。回到上面的例子:今天下午,丁姐要去买苦瓜了,OK,她来到小贩那里,说要买苦瓜,事件对象产生。小贩呢?看到有顾客来了,肯定很高兴塞,他接下来做的事情就是一个事件处理程序:取菜、称重、收钱交货。当然,小贩干的一些缺斤少两的事就不讨论了,小贩把这个过程封装起来,每次丁姐来买菜他就调用这个过程。在flex里面,侦听器就是一个函数,它接受事件对象,并作出相应的响应。
什么叫注册事件侦听器?
老板告诉小贩,如果有人来买菜,你就怎么怎么滴?于是小贩就记住了,只要有人来买菜,他就按老板的要求做。当然,如果别人来买布,小贩就不知道怎么做了,因为老板没告诉他该怎么做。所以他会忽略掉买布的。当然了,如果是一位新来的伙计,老板对他进行了培训该怎么卖菜。但是现在还轮不到他当值,所以,丁姐来买菜时,这位新来的伙计是不会招呼她的,即使丁姐嗓门再大也没用。对不起,虽然我会卖菜,可是老板没叫我卖菜。同理,对一个flex组件注册侦听器就是告诉组件当事件发生时调用事件处理程序。有两种方法可以注册事件侦听器,一种是在组件里面使用click属性
//考虑到文章排版,以下代码不是完整实例
<mx:Button id="myButton" click="sub(event);" />
public function sub(event:Event):void {
//事件处理程序
}
还有一种是写在AS里面:
//初始化时就为组件注册事件侦听器
<mx:Application initialize="createListener();">
<mx:Button id="myButton" />
public function sub(event:Event):void {
//事件处理程序
}
public function createListener():void {
//前一个参数是参数类型,后一个参数是侦听器函数名
myButton.addEventListener(Event.type,sub)
}
事件流
丁姐去小贩那里买菜,这是一个大型连锁卖场,小贩上面有主管,主管上面有经理。丁姐来买菜时,小贩、主管、经理都被告知需要卖菜(都已注册事件侦听器),单丁姐买菜这个事件对象产生后,经理最先知道,然后主管知道,最后小贩知道丁姐来买菜,小贩就是事件对象目标,然后小贩执行卖菜程序,然后就是主管执行卖菜程序,最后是经理执行卖菜程序。在flex里面,如果多个组件嵌套在一起,呈现包含关系,当事件发生时,事件对象会从外至里依次遍历所有组件,直到达到目标组件停止遍历,然后再从目标组件往外遍历,如果该组件已注册事件侦听器,则执行该侦听程序。
事件对象的生命周期:(原创:未经证实)
事件发生 产生事件对象 发送事件对象 捕获事件对象 处理事件
10月30日注:实际上,是有事件对象的产生我们才说事件发生。这个事件对象包含了这个事件发生时的一些具体属性。好比:“天鹅”号台风的产生就是发生台风的一个具体事例。两者应该不存在先后关系。
7请描述这两种注册事件侦听器的异同:
click="sub(event);"
myButton.addEventListener(Event.type,sub)
这个我研究了一天,主要是说一下我自己的想法,欢迎大家一起讨论。
我有两种想法:现罗列多下
一、
(估计这种想法是错误的)
click="sub(event);"表示click事件发生后,执行sub(event)方法,接受Event类型的事件对象。(如果click事件发生之后不产生类型为Event类型的事件对象怎么办?)(有人说打雷了我们却看到“天鹅”号台风的产生,实际上是不可能的)
myButton.addEventListener(Event.type,sub)表示click事件发生后,产生类型为Event的事件对象,如果事件对象的type属性与注册侦听器时的第一个参数匹配,则调用sub(event)方法。(如果type属性符合第一个参数但是事件对象不属于Event类型呢?)(程序会报错,参数类型不能强制转换,证实了flash编译器是根据事件对象的类型调用侦听器函数,跟侦听器函数可以接受的参数类型没有关系)
以上不懂的,可以联系我,我有具体事例证实。
实际上,计算机是根据对象的一些具体特征去识别事件的。这句话很重要,理解了,就没什么问题了。
二、
click="sub(event);"
myButton.addEventListener(Event.type,sub)
编译时都把sub(event)写入到组件的一个方法列表里。事件对象发生时,结合事件流的原理,判断事件对象的类型,如果符合侦听器的参数,则执行该事件侦听器。
疑问?如果对一个组件同时注册两种不同的事件侦听器呢?
优先调用click="",然后才调用add方法。
分享到:
相关推荐
### Flex事件机制详解 #### 一、事件简介 在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService...
Flex事件机制是Adobe Flex应用程序中处理用户交互和组件通信的核心组成部分。它主要涉及事件流、事件处理程序以及事件对象的概念,这些在构建富互联网应用程序(RIA)时扮演着至关重要的角色。下面将对这些概念进行...
Flex事件机制是Adobe Flex应用程序开发中的核心组成部分,它允许组件之间进行有效的通信和交互。对于初级Flex程序员或爱好者来说,理解这一机制至关重要。在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、...
事件机制使得开发者能够轻松响应用户交互和系统事件,为Flex程序员提供了强大且直观的处理工具。 首先,Flex事件是用户与应用程序交互的关键。事件是ActionScript 3.0中的核心概念,它们在DOM3事件模型的基础上进行...
通过上述内容,我们了解了Flex事件机制的基本概念及其重要组成部分,包括事件的触发与处理、事件注册通道的作用、事件分发的过程以及事件对象的属性。对于Flex开发者而言,熟练掌握这些知识可以帮助他们更加高效地...
【Flex 事件机制详解】 Flex 事件机制是 Flex 应用程序中不可或缺的一部分,它使得组件之间能够有效地通信,响应用户交互以及管理应用程序状态。在深入理解 Flex 事件机制之前,我们需要先了解一下基本概念。 1. *...
总的来说,Flex事件机制是通过事件流的分发实现组件间的交互,自定义事件则提供了更灵活的数据传递和处理方式。理解并熟练运用这一机制,能帮助开发者更好地设计和实现复杂的Flex应用程序。对于Flex开发者来说,掌握...
Flex 事件流是Flex应用程序中事件处理的核心机制,它使得组件之间能够有效地通信和响应用户交互。在深入探讨之前,我们需要理解几个基本概念。 1. **事件机制**:事件是Flex中的一种通信方式,当特定条件满足时,...
Flex的核心之一在于其强大的事件处理机制。事件是Flex中实现用户交互的关键,涵盖了从用户操作(如点击、键盘输入)到数据变化(如数据绑定更新)的各个方面。理解并掌握Flex事件,是实现复杂界面逻辑的前提。 1. *...
Flex事件机制是Adobe Flex框架中的核心组成...通过这份资料“关于flex事件的讲解.pdf”,读者将能够全面掌握Flex事件机制,包括如何创建、监听和处理事件,以及如何优化事件性能,为构建富互联网应用程序打下坚实基础。
在本文中,我们将深入探讨基于Java的Flex事件监听机制,这是一种强大的工具,允许开发者响应用户交互和应用程序状态的变化。Flex事件模型是ActionScript 3.0的核心组成部分,它与Java的事件处理方式有所不同,但可以...
通过以上分析,我们可以看到Flex的事件处理机制不仅强大且灵活,而且遵循标准,易于学习和使用。无论是在构建复杂的用户界面还是实现复杂的业务逻辑方面,事件都起着至关重要的作用。掌握Flex的事件机制,有助于...
综上所述,理解和熟练运用Flex事件机制对于开发高质量的Flex应用程序至关重要。通过有效地利用事件监听、派发和管理,可以创建出响应迅速、功能丰富的用户界面。学习并掌握这些知识点,将使你在Flex编程中游刃有余。
Flex的事件调度机制确保了事件的有序处理,避免了多个事件同时处理的混乱情况。 10. 滚动事件和数据改变事件: 对于列表和数据网格等控件,滚动事件(ScrollEvent.SCROLL)允许我们对用户滚动行为作出反应,而...
在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的高级特性之一。下面将详细介绍Flex自定义事件的相关知识点。 #### 1. 自定义事件的意义 在Flex应用中,事件是一种对象,...
第二十一至第二十五章可能涵盖Flex事件处理机制,讲述如何监听和响应用户操作,以及如何在组件间进行通信。 第二十六至第三十章可能会讨论Flex应用的优化和性能调试,如减少组件重绘、缓存策略、内存管理和加载优化...
阅读这份文档将有助于深入理解Flex事件机制,并在实际开发中更高效地利用它们。 总之,理解Flex的事件模型对于创建响应式和高效的RIA至关重要。熟练掌握事件处理可以让你的Flex应用程序更加互动,提升用户体验。...
Flex事件学习是Adobe Flex框架中的一个重要组成部分,它允许开发者创建响应用户交互的动态应用程序。Flex事件模型基于ActionScript 3.0的事件模型...通过实践`EventDemo1`这样的示例,你可以更深入地掌握Flex事件机制。
Flex的核心优势在于其强大的用户界面组件库以及高效的事件处理机制。本文将详细探讨Flex中的事件机制,特别是`target`与`currentTarget`的区别,以及`useCapture`的作用。 #### 二、事件机制基础 在Flex中,事件是...