首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

事件源和自定义事件

2012-11-05 
事件流和自定义事件下面有两个很简单的一个例子:例子一:button.addEventListener(click,showText)//给

事件流和自定义事件
下面有两个很简单的一个例子:
    例子一:
    button.addEventListener("click",showText);       //给按钮添加一个事件,第一个参数是事件的类型,第二个参数是调用什么方法
    internal function showText(evt:MouseEvent):void{
         txt.text = "click a button";
    }


    例子二:
    btn1.addEventListener(MouseEvent.CLICK,onClick);

    internal function onClick(evt:MouseEvent):void{
        Alert.show("你点击了一下按钮","提示");
    }



  

    事件流:
        调用事件会经过三个阶段:
            1、捕获阶段:从根节点到子节点,检测对象是否注册了监听器,是则调用监听函数
            2、目标阶段:调用目标对象本身注册的监听程序
            3、冒泡阶段:从目标节点到根节点,检测对象是否注册了监听器,是则调用监听函数
            注意:事件发生后,每个节点可以有2个机会(2选1)响应事件,分别是捕获和冒泡阶段,默认关闭捕获阶段

    上面事件流可能看的有些生疏,比如一个界面中放了画布1,在画布1上放置了画布2,在画布2上面放置了按钮,在按钮1上注册了一个事件,
    捕获阶段是从画布1->画布2->按钮1,然后到达目标阶段,检测到按钮1有注册事件,然后从按钮1->画布2->画布1(这个阶段称为冒泡阶段)


    IEventDispatcher接口:
        addEventListener();        //注册事件监听器
        removeEventListener();  //移除事件监听器
        dispatchEvent();             //派发事件
        EventDispatcher类,参见手册


    addEventListener()方法
          此方法有5个参数:
                参数1:调用事件的类型
                参数2:调用什么方法
                参数3:捕获阶段调用是否开启,默认不开启
                参数4:优先级,值越大,优先级越高,
                参数5:是否使用弱引用,默认是false,不使用弱引用(使用强引用),这个类似于java中的垃圾收集,如果改为true时就会收回垃圾





Event对象
    Event类作为创建Event对象的基类,当发生事件时,Event对象将作为参数传递给事件监听器
    最长见得如:MouseEvent,KeyboardEvent


自定义事件
        1、创建自定义事件名称的Event
                dispatchEvent(new Event("myEvent",true,false));
        2、创建扩产事件类
                Public class MyEvent extends Event{
                        ......
                }

        示例一:dispatchEvent()方法的使用方法:本示例效果是:点击按钮后会弹出文本框“触发了"+Event1_.0.cav注册的:testEvent"事件”





        第二个示例:定义类使用extends关键字自定义方法
//此自定义事件的功能是:调用事件的时候在构造方法中传入值,然后将值赋值到data变量中                package com.events                {          import flash.events.Event;          public class NewEvent extends Event          {                public static const NEWCLICK:String="newevent";                public var data:String;                public function NewEvent(type:String,data:String)                {                                       this.data=data;                       super(type, false, false);                }                         }                }




热点排行