曾经在学习自定义事件时碰到不少问题,当时又没人问,周围也没什么人学,网上答案说得也不是很详细,所以有时碰壁不少,为了给初学者(比我学得晚的哈,呵呵)更容易使用自定义事件,我写了个简单的例子,希望能给迷茫中的他们带去希望。
经过我的不断调试,我自己总结出了一点东西,有些也不知道准不准确,就是说要分发事件的组件必须是继承自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>
最后运行下看看效果吧!
分享到:
相关推荐
本篇文章将深入探讨如何定义和优化自定义模块,以及处理自定义事件。 首先,理解FreeSwitch模块的生命周期是至关重要的。一个模块通常包括加载、初始化、运行和卸载四个阶段。在加载阶段,模块被FreeSwitch核心加载...
自定义事件则是对系统内置事件的扩展,让我们能够根据具体需求创建和处理自己的事件。本篇文章将深入探讨如何在C#中自定义事件以及如何触发这些事件,同时展示如何在窗体之间传递数据,特别是从子窗体到父窗体。 ...
海典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 添加主...
自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...
在VC(Visual C++)中实现自定义事件的编程是一个重要的技能,特别是在开发Windows应用程序时。自定义事件允许程序员扩展标准事件处理机制,创建特定于应用的交互逻辑。本实例将探讨如何在C++中利用MFC(Microsoft ...
### 自定义事件与参数(C#) 在C#编程中,事件是一种特殊的委托类型,用于封装方法调用,这些方法通常响应对象状态的变化或其他动作的发生。事件是.NET框架中的一个核心概念,它允许对象之间进行通信,而无需彼此...
在Java编程中,自定义事件(Custom Events)是一种常见的设计模式,用于在对象之间传递信息。自定义事件允许我们创建特定于应用的事件类型,以便更好地处理和响应应用程序中的特定情况。以下是一个简单的自定义事件...
在Java编程中,自定义事件是扩展应用程序功能和实现组件间通信的重要手段。当你需要在类之间传递特定信息或触发特定行为时,自定义事件能提供极大的灵活性。本教程将深入探讨如何在Java中创建并使用自定义事件,以...
在本实例中,我们将深入探讨如何在ActionScript中实现自定义组件和自定义事件,这对于创建复杂的Flash应用程序至关重要。 首先,让我们了解自定义组件。在ActionScript中,自定义组件是通过继承已有的UIComponent...
在Qt框架中,自定义事件是扩展系统事件处理机制的一种方式,这允许开发者根据特定需求创建并传递自己的事件类型。自定义事件对于跨线程通信尤其有用,因为在多线程环境中,直接修改非本线程对象的状态通常是不允许的...
VB用户自定义事件绕来绕去的,翻了半天书也不好弄清楚,最后还是仔细翻看MSDN的事例弄有了。我把它贴成了VB可运行工程,试运行一下就很有体验感了,学起来省时省力。取之于MSDN用之于需要的学习,不需要消耗积分。
在探讨基于MFC(或QT)的OSG(OpenSceneGraph)自定义事件方法时,首先要明确OSG的基本概念和MFC、QT的事件处理机制。MFC(Microsoft Foundation Classes)和QT都是用于开发Windows应用程序的框架,它们提供了丰富的...
labview自定义事件.vi labview自定义事件.vi
自定义事件是C#中一个非常重要的特性,它允许开发者根据自己的需求设计事件处理流程。本篇将深入探讨如何在C#中定义自定义事件,以及它们在实际开发中的应用。 首先,事件是基于委托(Delegate)的,委托在C#中相当...
javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent
Java 自定义事件是Java编程中一个重要的概念,它允许开发者创建自己的事件机制,以实现不同组件之间的通信。在Java中,事件处理主要依赖于事件源(Event Source)、事件(Event)和事件监听器(EventListener)。当...
本文将深入探讨标题为“sokcet通讯客户端部分源码(带自定义事件响应)”的项目,重点关注C#语言中实现TCP套接字(socket)通信以及自定义事件驱动模式的相关知识点。 首先,TCP(Transmission Control Protocol)是...
本篇将深入探讨如何通过继承`QEvent`类来自定义事件,并介绍如何使用`postEvent`和`sendEvent`函数来处理这些自定义事件。 ### 自定义事件 1. **继承QEvent**: 自定义事件的第一步是创建一个新的C++类,该类继承...
cocos2dx-lua 自定义事件类
张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。