`
#天琪#
  • 浏览: 159373 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

事件机制

    博客分类:
  • FLEX
阅读更多
摘自http://www.86cg.com/tutorial/2d/200701/404_5.html

    http://www.blogjava.net/19851985lili/articles/101171.html
 

一直都不大明白事件的三个阶段有什么样的区别与作用,今天好好瞄瞄。
 
   1.使用类静态属性,用const定义事件字符串名称变量。AS3.0中用了一个新的关键字定义了事件名称字符串变量,代码是public static const CLICK:String = "click";
   2.事件发送的几种方法:(1). 继承EventDispatcher类;(2).合成EventDispatcher.类不是一个单纯事件发送类,而是在执行某个方法(method),比如doSomething()时,附带的发送一些事件。这些事件发送者往往是这个类的组成部分,一些更小的类,通常是Sprite等.那么用这种做法就比较合理. (3).实现IEventDispatcher接口来进行事件发送。

   3.事件的传播:
事件触发后, Flex有3个检测事件监听器的阶段, 3个阶段的发生的顺序如下:
1. 捕获
2. 目标
3. 上浮
在任意一个阶段, 节点们都有机会操作事件. 比如: 用户点击了一个在VBox中的Button,
在捕获阶段, Flex检查Application对象(根节点)和VBox是否有监听器处理此事件. Flex然后在目标阶段触发按钮的监听器.
在上浮阶段, VBox和应用以与捕获阶段相反的顺序再次获得机会处理事件.
在Actionscript3.0中,你可以在任意目标节点上注册事件监听器. 但是部分事件会被直接传给目标节点,比如Socket类.
捕获阶段的节点顺序是从父节点到子节点的, 而上浮阶段刚好相反.
捕获事件缺省是关闭的,也就是说如果要捕获事件, 必须显式指定在捕获阶段进行处理.
每一个Event都有target和currentTarget属性, 帮助跟踪事件传播的过程.

捕获阶段:
在捕获阶段,Flex在显示列表中检查事件的祖先是否注册了事件的监听器. Flex从根节点开始顺序而下.
大多数情况中, 根节点是Application对象. 同时, Flex改变事件的currentTarget值.
缺省情况下, 在此阶段,没有容器监听事件. use_capture参数的值是False,在此阶段添加监听的唯一方法是在调用add_listener时,
传入一个为True值的use_capture参数, 比如:
myAccordion.addEventListener(MouseEvent.MOUSE_DOWN, customLogEvent, true);
如果是在Mxml中添加监听, Flex设置此参数为False, 没有办法进行修改.
如果设置了use_capture为True, 那么事件将不会上浮. 如果既想捕获又想上浮就必须调用 addEventListener两次.
一次use_capture参数为true, 一次为false;
捕获很少使用, 上浮的使用更为普遍.

目标阶段:
在目标阶段, Flex激发事件的监听程序, 不检查其他的节点.

上浮阶段:
事件只在bubbles属性为True时才进行上浮. 可以上浮的事件包括: change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp.
在上浮阶段, Flex改变事件的currentTarget属性, 而target属性是初始派发事件的对象.

查询事件阶段:
使用事件的eventPhase可以获得事件当前的阶段,
1: CAPTURE_PHASE
2: AT_TARGET
3: BUBBLING_PHASE
示例: private function determineState(event:MouseEvent):Void { Debug.trace(event.eventPhase + ":" + event.currentTarget.id); }

停止传播:
使用下面两个函数停止事件的传播:
stopPropagation()
stopImmediatePropagation()









另:想要接收或者发送事件都必须必须继承EventDispatcher,这点在使用自定义事件时注意下


    另如:
    dynamic public class Settings extends Proxy implements IEventDispatcher {

public static const INIT:String = "init";
private static var instance:Settings;
private var eventDispatcher:EventDispatcher;
public var data:XML;
private var urlLoader:URLLoader;

public function get isLoaded():Boolean {
return data != null;
}

public function Settings(enforcer:SingletonEnforcer) {
eventDispatcher = new EventDispatcher();
}

private function onXMLDataLoaded(event:Event):void {
data = XML(urlLoader.data);
dispatchEvent(new Event(Settings.INIT, true, true));
}

public static function getInstance():Settings {
if(Settings.instance == null) {
Settings.instance = new Settings(new SingletonEnforcer());
}
return Settings.instance;
}

flash_proxy override function getProperty(tt:*):* {
trace (data[tt.toString()]);
return data[tt.toString()];
}

public function loadSettings(url:String):void {
var urlRequest:URLRequest = new URLRequest(url);
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onXMLDataLoaded);
urlLoader.load(urlRequest);
}

public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, weakRef:Boolean = false):void {
eventDispatcher.addEventListener(type, listener, useCapture, priority, weakRef); }

public function dispatchEvent(event:Event):Boolean {
return eventDispatcher.dispatchEvent(event);
}

public function hasEventListener(type:String):Boolean {
return eventDispatcher.hasEventListener(type);
}

public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
eventDispatcher.removeEventListener(type, listener, useCapture);
}

public function willTrigger(type:String):Boolean {
return eventDispatcher.willTrigger(type);
}

}

}

class SingletonEnforcer {}






 








    学AS3也有三个月了,说实话速度的确是慢得出奇,到现在还不会灵活使用dynamic,static这些家伙,也难怪他说我根本不是编程的料。是啊,他看我就像一武林高手看一三岁小毛孩舞剑,不屑一顾。悲哀呀,明明一编程高手在身边却没有任何的帮助。他不屑,而我不想被他那神情所伤。路,一直都是我一个人在走,不晓得已经走了多少弯路。就像一没爹没娘的崽,自个洗衣,自个刷牙……




    跟他又闹矛盾了,呵~~~




    Secrets Makes A Woman Woman.
分享到:
评论

相关推荐

    java中的事件机制

    Java中的事件机制是Java编程中一个重要的概念,它基于观察者模式(Observer Pattern)来实现对象之间的通信。观察者模式是一种行为设计模式,允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的...

    JavaScript事件机制详细研究

    JavaScript 事件机制详细研究 JavaScript 事件机制是指浏览器中发生的各种事件,例如点击、鼠标悬停、键盘输入等,JavaScript 通过捕捉这些事件来执行相应的操作。本文将详细介绍 JavaScript 事件机制的实现方式和...

    openlayer事件机制介绍

    事件机制是OpenLayers的核心部分,它使得用户与地图进行交互成为可能。在OpenLayers中,事件机制主要涉及到控件(Controls)和处理器(Handlers)的概念。 控件在OpenLayers中扮演着重要的角色,它们是附加到地图上...

    Java事件机制例子

    Java事件机制基于观察者模式,其中事件源(如按钮)会发布事件,而事件监听器则订阅这些事件并执行相应的操作。 事件、事件监听器和事件源是Java事件处理的三个核心概念。事件是用户或系统发生的某种情况,如鼠标...

    Qt中的事件机制

    ### Qt中的事件机制详解 #### 一、事件的分类与特性 在Qt中,事件机制是框架的核心之一,用于管理用户界面与用户的交互过程。事件根据其产生方式的不同,可以分为三类:自发事件(Spontaneous events)、发布事件...

    reactnative触摸事件机制详解及高仿微信通讯录功能

    本文将深入探讨React Native的触摸事件机制,并展示如何利用这一机制实现类似微信通讯录的功能。 首先,我们要了解React Native中的触摸事件系统。与Web开发中的点击事件不同,React Native使用了一套基于 ...

    c#事件机制归纳,c#事件机制归纳,c#事件机制归纳

    C# 事件机制归纳 C# 事件机制是指在 C# 编程语言中实现事件处理的机制,包括委派、事件和事件处理过程。以下是对 C# 事件机制的详细归纳: 一、委派 委派是指一种特殊的方法签名,可以将方法作为参数传递,用于...

    flex事件机制的demo

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

    spring事件机制

    Spring框架的事件机制是其核心特性之一,它提供了一种基于发布-订阅模式的事件处理方式,使得在Spring应用中的不同组件之间可以进行解耦通信。这个机制允许一个组件(通常是一个服务)触发一个事件,然后其他感兴趣...

    使用Spring事件机制实现异步的方法

    使用Spring事件机制实现异步的方法 Spring框架提供了一种事件机制,允许开发者将代码解耦合,实现松散耦合的设计理念。这里将详细介绍如何使用Spring事件机制实现异步的方法。 事件机制的实现主要包括三个部分:...

    android 事件机制

    安卓事件机制的描述,包括安卓的进程通信机制、view事件的传递机制以及安卓的广播机制。

    Qt事件机制浅析

    ### Qt事件机制浅析 #### 一、什么是事件? 在Qt框架中,事件是指系统或应用程序内部发生的某种“动作”,这种“动作”需要被特定的对象所感知并作出响应。这里的“动作”是一种广义上的概念,既包括用户交互操作...

    Flex4.5事件机制

    Flex4.5事件机制是Flex应用程序开发中的核心组成部分,它基于ActionScript 3.0的事件模型,并且遵循DOM3级事件规范。事件机制使得开发者能够轻松响应用户交互和系统事件,为Flex程序员提供了强大且直观的处理工具。 ...

    PHP 事件机制(2)

    在上一个版本的事件机制中,可能涉及了复杂的事件监听器和触发器的实现,而在这个版本中,主要目标是简化这一过程。我们来看一下具体实现。 首先,定义了一个名为`Event`的类,它继承自`stdClass`。`Event`类有两个...

    Android事件机制测试项目

    在Android开发中,事件机制是应用交互的核心部分,它使得用户与应用程序之间的沟通变得顺畅。这个"Android事件机制测试项目"旨在深入理解并实践这一关键功能。以下将详细阐述Android事件处理的相关知识点。 首先,...

    Visual C++事件机制线程同步工程

    在IT领域,线程同步和事件机制是多线程编程中的关键概念,特别是在Windows系统下,Visual C++提供了丰富的工具来实现这些功能。本项目"Visual C++事件机制线程同步工程"着重于如何利用事件对象(CEvent)进行线程间...

    Flex 事件机制,flex入门学习

    【Flex 事件机制详解】 Flex 事件机制是 Flex 应用程序中不可或缺的一部分,它使得组件之间能够有效地通信,响应用户交互以及管理应用程序状态。在深入理解 Flex 事件机制之前,我们需要先了解一下基本概念。 1. *...

    js事件机制 .pdf

    ### JavaScript事件机制详解 #### 一、引言 在学习编程语言的过程中,"事件"这一概念往往是初学者遇到的一个难点,然而它又是编程中极为重要的一个组成部分。在JavaScript中,事件处理更是不可或缺的一部分,它是...

    Flex事件机制详细说明

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

    Flex的事件机制笔记

    Flex事件机制是Adobe Flex应用程序开发中的核心组成部分,它允许组件之间进行有效的通信和交互。对于初级Flex程序员或爱好者来说,理解这一机制至关重要。在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、...

Global site tag (gtag.js) - Google Analytics