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

Flex事件处理机制(转载)

    博客分类:
  • Flex
 
阅读更多

为什么要设计这样的处理机制呢?

由于OOP编程将程序看成一个个对象、模块共同交流协作而提供功能或服务,这样必然会涉及对象之间交流消息的情况。所谓消息,就是指系统某处发生了什么事情,以信息的方式通知相关的对象。

AS3中采用的DOM3事件处理机制可以让交流数据的双方降低耦合度,及所谓的“脱耦”(脱离耦合性)!使得各个对象之间依赖性大大降低。

DOM3事件模型定义了一整套标准的生成和处理事件消息的方法,使程序中的对象可以相互交互、通信,保持自身状态和响应变化。

简单的说,数据的提供者只管发出数据对象,只要确保数据对象是flash.events.Event类或者子类的实例即可。

这种数据对象称为:事件(Event)。

数据对象的发出者称为:事件发送者(Event dispatcher)。

接受事件的对象称为:事件监听者(Event listener)。

DOM3事件的优点是:事件发送者和事件接收者的依赖性大大降低。

事件发送者只需要发送事件对象,

事件监听者只需要接受事件对象。

---------------------------------------------------------------------------------

下面用一个点菜的例子来深刻理解事件(Event)的原理!

当我们作为客人走进一家饭店时,就等于告诉服务生,我们要点菜,你来服务。当点菜时,我们只要报上需要的菜名,服务生自然会记录下我们点的菜单,并吩咐厨房。这个事件里就包含着DOM3的事件流程。

首先确定几个类,即:

客人类(Customer ),事件发送者(Event dispatcher)。

服务生类(Waiter ),事件监听者(Event listener)即事件侦听器。

点菜事件类(OrderEvent ),事件(Event)。

这些类都属于一个文档类SampleOrderDishes。

首先设计OrderEvent 事件类,这个事件应该包含事件的类型“点菜”,以及所点的菜名。

package
{
import flash.events.Event;
public class OrderEvent extends Event
{
   public static const ORDER_DISHES: String = "点菜";
   private var _dishes:Array;
   private var _name:String;
  
   public function OrderEvent()
   {
    super(ORDER_DISHES);
   }
   public function set nameCustomer(name:String):void
   {
    _name = name;
   }
   public function get nameCustomer():String
   {
    return _name;
   }
  
   public function set dishes(dishesAry:Array):void
   {
    _dishes = dishesAry;
   }
   public function get dishes():Array
   {
    return _dishes;
   }
  
   override public function toString():String
   {
    return formatToString("OrderEvent","type","bubbles","cancelable","eventPhase","dishes","name");
   }
   override public function clone():Event
   {
    var tmpEvt:OrderEvent = new OrderEvent();
    tmpEvt._dishes = _dishes;
    return tmpEvt;
   }

}
}

接下来是客人类Customer,客人类中需要发出点菜OrderEvent事件。

package
{

import flash.events.EventDispatcher;
public class Customer extends EventDispatcher
{
   private var name:String;
   public function Customer(ns:String)
   {
    name = ns;
   }
   public function order():void
   {
    var orderDish:OrderEvent = new OrderEvent();
    orderDish.dishes = ["宫保鸡丁","鱼香肉丝","咖喱牛肉"];
    orderDish.nameCustomer = name;
    dispatchEvent(orderDish);
//发出点菜事件
   }

}
}

服务生类Waiter类中需要有接受 OrderEvent 事件的公开方法,用来做 OrderEvent 事件的监听器。

package
{

public class Waiter
{

  
   public function replayOrderFood(evt:OrderEvent):void
   {
   
    trace("你好,"+ evt.nameCustomer+"!你点的菜是:\r"+evt.dishes);
    trace("我马上吩咐厨房去做。");
   }

}
}

最终文档类SampleOrderDishes类

package {
import flash.display.Sprite;

public class SampleOrderDishes extends Sprite
{
   public function SampleOrderDishes()
   {
    var luming:Customer = new Customer("Luming");
    var serviceWaiter:Waiter = new Waiter();
   
    luming.addEventListener(OrderEvent.ORDER_DISHES, serviceWaiter.replayOrderFood);
    luming.order();
    //luming这个人用order()方法点菜,在Order()方法中发出了OrderEvent事件,如Customer中所示

/*之后,被服务生serviceWaiter的replayOrderFood方法侦听到了,输出了

你好,luming!你点的菜是

宫保鸡丁,鱼香肉丝,咖喱牛肉

我马上吩咐厨房去做

*/
   }
}
}

书中看到的例子觉得写的不错。拿来修改一下,并加入自己的分析。

如果想清楚整个流程建议debug走几遍,会对事件理解的更深刻。

分享到:
评论

相关推荐

    Flex事件机制详细说明

    ### Flex事件机制详解 #### 一、事件简介 在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService...

    Flex4.5事件机制

    Flex事件处理依赖于ActionScript 3.0的事件机制,但在Flex层面提供了更直观的接口来处理这些事件。 事件流是ActionScript 3.0引入的一个重要概念,它与显示列表紧密相关。事件流描述了事件对象如何在显示列表中的...

    Flex的事件机制笔记

    自定义事件是扩展Flex事件处理能力的重要手段。当你需要处理非标准行为或者组件间的复杂交互时,可以创建自定义事件。创建自定义事件需要继承Event类或者与其相关的子类,例如MouseEvent或KeyboardEvent。在自定义...

    flex事件机制的demo

    Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...

    flex事件机制分析

    Flex事件机制是Adobe Flex应用程序中处理用户交互和组件通信的核心组成部分。它主要涉及事件流、事件处理程序以及事件对象的概念,这些在构建富互联网应用程序(RIA)时扮演着至关重要的角色。下面将对这些概念进行...

    Flex 事件机制,flex入门学习

    在 Flex 中,事件监听通常通过在 MXML 组件上添加事件处理函数来完成。例如,我们可以为 `Button` 组件的 `click` 事件添加一个处理函数,如 `clickHandler`,并在函数签名中传递 `event` 参数。这个 `event` 参数...

    Flex事件机制(通俗易懂)

    通过上述内容,我们了解了Flex事件机制的基本概念及其重要组成部分,包括事件的触发与处理、事件注册通道的作用、事件分发的过程以及事件对象的属性。对于Flex开发者而言,熟练掌握这些知识可以帮助他们更加高效地...

    flex事件机制的分发

    Flex事件机制是Adobe Flex框架中一个关键的概念,它允许组件之间通过事件进行通信。在Flex中,事件机制的分发主要包括三个主要阶段:捕获阶段、目标阶段和冒泡阶段。下面将详细介绍这些阶段以及自定义事件的创建与...

    flex事件flex事件flex事件flex事件

    下面,我将详细介绍Flex布局的基础知识以及可能与之相关的JavaScript事件处理。 1. **Flex布局基础**: - **Flex容器**:设置`display: flex`或`display: inline-flex`的元素成为Flex容器,其内部的子元素称为Flex...

    flex事件运行流程

    -- 组件和事件处理代码 --> ``` 在这个例子中,MXML文档结构决定了组件的实例化顺序和事件触发的时间点,开发者可以通过添加事件监听器来观察和响应这些事件。 总之,理解Flex事件运行流程,特别是`...

    flex3事件机制的讲座

    郑老师关于flex3事件机制的讲座,讲的很好哦!

    关于flex事件的讲解

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

    flex itemRenderer 渲染机制的概念和使用

    4. **事件处理** itemRenderer还可以监听并处理鼠标点击、键盘交互等事件。在itemRenderer内部添加事件监听器,可以实现对特定项的响应。 5. **重用和优化** Flex为了提高性能,会对itemRenderer进行复用。因此,...

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

    Flex的核心优势在于其强大的用户界面组件库以及高效的事件处理机制。本文将详细探讨Flex中的事件机制,特别是`target`与`currentTarget`的区别,以及`useCapture`的作用。 #### 二、事件机制基础 在Flex中,事件是...

    flex 事件流原理

    Flex 事件流是Flex应用程序中事件处理的核心机制,它使得组件之间能够有效地通信和响应用户交互。在深入探讨之前,我们需要理解几个基本概念。 1. **事件机制**:事件是Flex中的一种通信方式,当特定条件满足时,...

    flex的事件详解

    通过以上分析,我们可以看到Flex的事件处理机制不仅强大且灵活,而且遵循标准,易于学习和使用。无论是在构建复杂的用户界面还是实现复杂的业务逻辑方面,事件都起着至关重要的作用。掌握Flex的事件机制,有助于...

    flex 事件 代码生成器

    Flex事件代码生成器是一款专为Flex开发者设计的实用工具,旨在简化代码编写过程,提高开发效率。Flex是一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在Flex应用开发中,处理各种用户...

    Flex事件解析以及Flex基础功能介绍

    它允许开发者通过简单的拖放操作设计界面,同时支持高级事件处理机制,让开发者可以专注于业务逻辑,而非繁琐的界面细节。 #### 二、Flex事件解析:深入理解交互逻辑 Flex的核心之一在于其强大的事件处理机制。...

    关于flex事件的讲解.rar

    Flex事件机制是Adobe Flex框架中的核心组成部分,它允许开发者创建响应用户交互的动态应用程序。在Flex中,事件处理是通过事件监听器来实现的,这些监听器可以注册到UI组件或者应用程序本身,以便在特定事件发生时...

    FLEX事件监听样例(JAVA代码)

    在本文中,我们将深入探讨基于Java的Flex事件监听机制,这是一种强大的工具,允许开发者响应用户交互和应用程序状态的变化。Flex事件模型是ActionScript 3.0的核心组成部分,它与Java的事件处理方式有所不同,但可以...

Global site tag (gtag.js) - Google Analytics