曾经在学习自定义事件时碰到不少问题,当时又没人问,周围也没什么人学,网上答案说得也不是很详细,所以有时碰壁不少,为了给初学者(比我学得晚的哈,呵呵)更容易使用自定义事件,我写了个简单的例子,希望能给迷茫中的他们带去希望。
经过我的不断调试,我自己总结出了一点东西,有些也不知道准不准确,就是说要分发事件的组件必须是继承自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>
最后运行下看看效果吧!
分享到:
相关推荐
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 添加主...
FreeSwitch完整的自定义模块定义和改善自定义事件的例子,详细介绍见博客:https://blog.csdn.net/xxm524/article/details/126211171
自定义事件(java).doc自定义事件(java).doc自定义事件(java).doc自定义事件(java).doc自定义事件(java).doc
labview自定义事件.vi labview自定义事件.vi
自定义事件与参数(C#) 自定义事件与参数(C#)
javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent
JAVA自定义事件详解 java.util.EventObject java.util.EventListener
flex4 自定义事件 用法 源码 完整项目导入可运行
Qt自定义事件,Qt线程应用。
cocos2dx-lua 自定义事件类
张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。
在Qt中,你可以创建自定义事件类型,以便在应用程序中传递自定义的信息。为了实现自定义事件,你需要继承自`QEvent`类,并定义你自己的事件类型。然后,你可以在需要的时候创建自定义事件对象,并将它们发送给事件...
自己写的实例,包括 ActionSctip的自定义事件及自定义组件!
自定义事件的日历 JTCalendar ,JTCalendar是一款简易使用并且可以自定义事件的日历。包括圈点标识的颜色等都可以自定义。dem...
在VC中实现自定义事件的编程C++源代码程序小实例
教你如何在java中自定义事件,有源码,对你学习会很有帮助的。
VB用户自定义事件绕来绕去的,翻了半天书也不好弄清楚,最后还是仔细翻看MSDN的事例弄有了。我把它贴成了VB可运行工程,试运行一下就很有体验感了,学起来省时省力。取之于MSDN用之于需要的学习,不需要消耗积分。
QT 自定义事件 跨线程通信
jQuery自定义事件插件 博文链接:https://ioryioryzhan.iteye.com/blog/245096