`
nijiaben
  • 浏览: 130518 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何自定义事件

    博客分类:
  • Flex
阅读更多
    曾经在学习自定义事件时碰到不少问题,当时又没人问,周围也没什么人学,网上答案说得也不是很详细,所以有时碰壁不少,为了给初学者(比我学得晚的哈,呵呵)更容易使用自定义事件,我写了个简单的例子,希望能给迷茫中的他们带去希望。
   经过我的不断调试,我自己总结出了一点东西,有些也不知道准不准确,就是说要分发事件的组件必须是继承自EventDispatch的,否则就不能分发事件,也不能监听事件。还有一点,只是我的个人猜测,哪个组件广播事件,也就只有这个组件才能侦听得到该事件。下面开始代码:
   首先我们来定义事件,命为为LoginEvent.as
package
{
	import flash.events.Event;
	
	public class LoginEvent extends Event
	{
		public static const LOGIN:String = "Login";
		public function LoginEvent()
		{
			super(LOGIN);
		}
		override public function clone():Event{
			return new LoginEvent();
		}
		override public function toString():String{
			return "";
		}
	}
}

注意此处,有些书上说一般自定义事件都要覆盖两方法clone(),toString(),但是具我测试,好像也可以不重新定义这两方法。
接下来我们来定义分发该事件的EventDispatch类,命名为LoginDispatch :
package
{
	import flash.events.EventDispatcher;
	import flash.events.*;
	public class LoginDispatch extends EventDispatcher
	{
		private var eventDispatcher : EventDispatcher;
		public function LoginDispatch()
		{ 
			this.addEventListener(LoginEvent.LOGIN,con);
		}
		//注意此处的参数event不能少
		public function con(event:Event):void{
			trace(event.type+"事件发生了,我要处理它了...");
		}
	}
}

注意了,监听器的参数是不可少的,当时我就是这个参数省写了,结果花了我大半天调试才找出来。
最好我们来写个测试MXML文件test.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:s="*" layout="absolute">
		<mx:Script>
		<![CDATA[
			public function f():void{
				//必须是侦听此事件的EventDispatch对象广播此事件
				ld.dispatchEvent(new LoginEvent());
				trace(ld.willTrigger(LoginEvent.LOGIN));	
			}
		]]>
	</mx:Script>
    <s:LoginDispatch id="ld"/>
	<mx:Button click="f()" label="btn"/>
</mx:WindowedApplication>

最后运行下看看效果吧!
4
0
分享到:
评论

相关推荐

    FreeSwitch完整的自定义模块定义和改善自定义事件的例子

    本篇文章将深入探讨如何定义和优化自定义模块,以及处理自定义事件。 首先,理解FreeSwitch模块的生命周期是至关重要的。一个模块通常包括加载、初始化、运行和卸载四个阶段。在加载阶段,模块被FreeSwitch核心加载...

    C# 自定义 事件 和 触发自定义事件,显示子窗体传过来的值

    自定义事件则是对系统内置事件的扩展,让我们能够根据具体需求创建和处理自己的事件。本篇文章将深入探讨如何在C#中自定义事件以及如何触发这些事件,同时展示如何在窗体之间传递数据,特别是从子窗体到父窗体。 ...

    海典H1自定义事件框架浅说.doc

    海典H1自定义事件框架浅说 1、窗口概述 2 2、窗口相关事件 3 1、打开窗口 3 key事件 4 timer事件 4 2、保存数据 4 1、 pfc_begintran 4 3、 pfc_endtran 4 4、 Pfc_save 4 3、关闭窗口 4 3、数据窗口事件 5 添加主...

    flex4自定义事件用法

    自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...

    在VC中实现自定义事件的编程C++源代码程序小实例

    在VC(Visual C++)中实现自定义事件的编程是一个重要的技能,特别是在开发Windows应用程序时。自定义事件允许程序员扩展标准事件处理机制,创建特定于应用的交互逻辑。本实例将探讨如何在C++中利用MFC(Microsoft ...

    自定义事件与参数(C#)

    ### 自定义事件与参数(C#) 在C#编程中,事件是一种特殊的委托类型,用于封装方法调用,这些方法通常响应对象状态的变化或其他动作的发生。事件是.NET框架中的一个核心概念,它允许对象之间进行通信,而无需彼此...

    自定义事件(java).doc

    在Java编程中,自定义事件(Custom Events)是一种常见的设计模式,用于在对象之间传递信息。自定义事件允许我们创建特定于应用的事件类型,以便更好地处理和响应应用程序中的特定情况。以下是一个简单的自定义事件...

    教你如何在java中自定义事件

    在Java编程中,自定义事件是扩展应用程序功能和实现组件间通信的重要手段。当你需要在类之间传递特定信息或触发特定行为时,自定义事件能提供极大的灵活性。本教程将深入探讨如何在Java中创建并使用自定义事件,以...

    ActionScript的自定义组件及自定义事件例子

    在本实例中,我们将深入探讨如何在ActionScript中实现自定义组件和自定义事件,这对于创建复杂的Flash应用程序至关重要。 首先,让我们了解自定义组件。在ActionScript中,自定义组件是通过继承已有的UIComponent...

    Qt 自定义事件

    在Qt框架中,自定义事件是扩展系统事件处理机制的一种方式,这允许开发者根据特定需求创建并传递自己的事件类型。自定义事件对于跨线程通信尤其有用,因为在多线程环境中,直接修改非本线程对象的状态通常是不允许的...

    VB6用户自定义事件EVENT实例.zip

    VB用户自定义事件绕来绕去的,翻了半天书也不好弄清楚,最后还是仔细翻看MSDN的事例弄有了。我把它贴成了VB可运行工程,试运行一下就很有体验感了,学起来省时省力。取之于MSDN用之于需要的学习,不需要消耗积分。

    基于MFC(QT)的OSG的自定义事件2

    在探讨基于MFC(或QT)的OSG(OpenSceneGraph)自定义事件方法时,首先要明确OSG的基本概念和MFC、QT的事件处理机制。MFC(Microsoft Foundation Classes)和QT都是用于开发Windows应用程序的框架,它们提供了丰富的...

    labview自定义事件.vi

    labview自定义事件.vi labview自定义事件.vi

    C#自定义事件

    自定义事件是C#中一个非常重要的特性,它允许开发者根据自己的需求设计事件处理流程。本篇将深入探讨如何在C#中定义自定义事件,以及它们在实际开发中的应用。 首先,事件是基于委托(Delegate)的,委托在C#中相当...

    javascript实现自定义事件

    javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent

    java自定义事件

    Java 自定义事件是Java编程中一个重要的概念,它允许开发者创建自己的事件机制,以实现不同组件之间的通信。在Java中,事件处理主要依赖于事件源(Event Source)、事件(Event)和事件监听器(EventListener)。当...

    sokcet通讯客户端部分源码(带自定义事件响应)

    本文将深入探讨标题为“sokcet通讯客户端部分源码(带自定义事件响应)”的项目,重点关注C#语言中实现TCP套接字(socket)通信以及自定义事件驱动模式的相关知识点。 首先,TCP(Transmission Control Protocol)是...

    Qt自定义事件

    本篇将深入探讨如何通过继承`QEvent`类来自定义事件,并介绍如何使用`postEvent`和`sendEvent`函数来处理这些自定义事件。 ### 自定义事件 1. **继承QEvent**: 自定义事件的第一步是创建一个新的C++类,该类继承...

    cocos2dx-lua 自定义事件类

    cocos2dx-lua 自定义事件类

    as3典型的自定义事件模板

    张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。

Global site tag (gtag.js) - Google Analytics