`
vipygt
  • 浏览: 34715 次
社区版块
存档分类
最新评论

对事件的通俗理解(转载)

    博客分类:
  • Flex
 
阅读更多

前言: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方法。

分享到:
评论

相关推荐

    ERP概念通俗解释(转载)

    在网上找的ERP概念的通俗解释,可以帮助初入这个行业的人知道一些简单的流程

    CRM通俗概念(转载)

    摊主通过对顾客习惯的理解和服务的热情来留住客户,体现了CRM的核心理念之一——了解并满足客户需求。 #### 四、CRM的重要性及误区 尽管CRM听起来简单,但实际上其实施过程非常复杂。很多企业可能只是口头强调...

    通俗易懂的USB协议详解(转载).rar_ULPI 接口 信号_fpga/usb3300_ulpi协议_usb3300_usb协

    在设计过程中,开发者需要理解和掌握ULPI的时序操作,包括时钟同步、数据传输以及控制命令的发送和接收。 ULPI协议规定了一系列的控制信号,例如ULPI Clock(时钟)、ULPI Data(数据)、ULPI Reset(复位)等。...

    皇帝的新装(转载).ppt

    通过对《皇帝的新装》的学习,我们可以理解童话中蕴含的深刻思想,如批判虚荣、倡导诚实,同时锻炼我们的语言感受能力和阅读分析能力。这篇童话不仅是一则富有娱乐性的故事,更是对人性和社会现象的深刻洞察,无论...

    网站seo软文营销推广五不原则-写出优秀软文广告文案.docx

    好的标题应该是通俗易懂、简洁明了、能够反映文章的主要内容。 例如,站长可以写出一个简洁明了的标题,例如"网站SEO优化技巧",而不是"网站SEO优化技巧大全"。好的标题能够提高文章的点击率和阅读量,提高网站的...

    策划案例_网络营销软文写作技巧培训.pptx

    9. 效果评估:通过分析文章流量、置顶置首率、转载率和搜索引擎收录情况,来评估软文的营销效果,以便对策略进行调整优化。 掌握这些技巧,可以帮助企业和个人在网络营销中更有效地运用软文,实现品牌传播和市场...

    Coding Club Level 1 Python Programming Art by Chris Roffey PYTHO编程入门

    该书由Chris Roffey编写,全彩印刷,语言通俗易懂,非常适合对Python编程感兴趣的新手。 #### 书籍基本信息 - **出版信息**:此书由剑桥大学出版社(Cambridge University Press)出版,该出版社隶属于剑桥大学,...

    易学C++(潘嘉杰)

    本书以通俗易懂的方式讲解C++基础知识,特别适合刚入门C++的学习者。 #### 二、版权说明 本书的版权归属原作者所有,未经作者授权,不得对本书进行任何形式的修改或出版。仅允许上海大学的学生出于学习目的进行传播...

    博友共勉:你的博客为什么不受欢迎没人看.docx

    - **左岸读书**:以深度思考和高质量文章著称,通过精选和转载优秀文章来吸引读者,逐渐形成了独特的品牌形象。 - **酷壳**:陈皓的博客以其独特的写作风格和技术深度而闻名,不仅限于代码堆砌,而是深入浅出地...

    鄂教版语文七年级上册第3课《海鸥乔那坦》ppt课件1

    - **过程与方法**:通过复述故事、一句话概括等方式加深对故事内容的理解;品味乔那坦这一形象所承载的精神内涵。 - **情感态度价值观**:培养学生的积极向上精神,鼓励他们勇敢追求自己的理想。 #### 三、作者简介...

    fpga学习经历

    - **《Verilog数字系统设计教程》**:这本书非常适合初学者,语言通俗易懂,通过丰富的实例帮助读者快速掌握Verilog的基本语法。 - **《设计与验证Verilog HDL》**:这是一本较为深入的书籍,适合有一定基础的学习者...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    二十三种设计模式【PDF版】

    需要将 J2EE 用对地方,那么只有理解 J2EE 此类框架软件的精髓,那么你才能真正灵活应用 Java 解决你的问题,甚至构架出你自 己企业的框架来。(我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?) ...

    c语言数据结构字符串模式匹配算法.zip

    KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一.简单匹配算法 先来看一个简单匹配算法的函数: ...

Global site tag (gtag.js) - Google Analytics