July 26, 2006

【黑羽】超简便的事件发送器:EventSender类

ActionScript3天地会公测中...

【黑羽】注意!超简便的事件发送&管理器EventSender 1.5版已发布

http://www.kingda.org/archives/kingda/2006/10/eventsender_15.html 版本号: 1.0正式版 呵呵,这个小东东虽然小,但是很有用。

简单的说,它只用两行代码就可以让ActionScript 2.0中所有不能发送事件的对象都可以发送事件了。
最有用的就是让舞台上任何一个普通MovieClip都可以发送事件出来,并很容易的被舞台上,或者类侦听到。
实在是方便的紧,我们在小项目中经常用它,喜欢。
cool.gif

点击下载
为何使用EventSender?
ActionScript 2.0中除了UIComponent能自己发送事件,绝大部分类不能自己发送事件的,比如MovieClip, 或者一些自定义的类。黑羽还制作了一个EventSender的事件发送类来解决。
当然你可以通过扩展来解决MovieClip这些类来解决,但是在一些轻量级或者特殊运用中,还是用黑羽这个EventSender类更加方便。
比如说,你突然需要舞台上某个A_mc的运行到第20帧时发送一个"finished"事件出来,并且希望另外某个B_mc能够捕捉到这个事件,那么用一般的扩展方法不知道有多么麻烦!
(1.要重做一个带有事件发送功能的类和A_mc通过某种方式绑定。2.同时确保在B_mc中要能访问到发送事件的对象并addEventListenr)。
而用俺的EventSender类非常简单,A_mc中写 EventSender.send("finished", this), B_mc中写EventSender.addListener("finished", listenerFunc),并可以通过event.target属性直接定位A_mc,真是简单的不能再简单了。(请尽量以正规方法为主,不推荐频繁使用,不是好的编程习惯)
laughing.gif
ActionScript 3.0中就不需要这个东东了,见
http://www.kingda.org/archives/kingda/2006/07/as305.html


<使用方法>
用法:
1.双击mxp文件安装。
2.不管在帧中写代码,还是在类中,要用EventSender,就要在第一行写上

 import org.kingda.tools.EventSender;

侦听事件: EventSender.addListener(eventType:String, lisener:Object);
侦听器可以是函数也可以是对象。 f
发送事件: 先定义evtObj {type:"eventName", target:xxx}, 然后EventSender.dispatch(evtObj:Object);
快速发送事件 : EventSender.send(eventType:String, eventTarget:Object)
例子:

//黑羽翔天EventSender类 1.0版
import org.kingda.tools.EventSender;
EventSender.addListener("gogo", lisFunc);
var o:Object = {type:"gogo", target:this};
EventSender.dispatch(o);

function lisFunc(eO):Void {
trace ("listened:" + eO.target);
}

var lisObj:Object = new Object();
lisObj.gogoKingda = function () {
trace("gogoKingda listened!");
}
EventSender.addListener("gogoKingda", lisObj);
EventSender.send("gogoKingda", this);



使用要点:
由于都是使用的EventListener来addListener的,所以如果事件名相同的话,要用event.target来区分判断。或者采用不同的事件名,管理好即可。
总而言之,这只是个小工具,为了方便才用用。不要把它当成主要方法哦!
laughing.gif

广告:哈哈,现在刚好是阿里妈妈推广期哦,你是站长吗?推荐注册阿里妈妈赚广告费

TrackBack

TrackBack URL for this entry:
http://www.kingda.org/mt/mt-tb.cgi/83

Comments (6)

saicn:

我爱烟水晶,这个不是spam.

我正在尝试将Cairngorm Framework的设计思想用与AS2开发中,预计会很高效!

希望修正一下send的用法,能跟上要需要发送的内容,
public static function send(evtType:String, sendObj:Object,evtData:Object):Void {
getInstance().sendEvt(sendObj, evtType,evtData);
}
大体只是缩短了EventDispatcher类的名字,给懒人造福

这样A类如何监听B类发出的事件?我想应该是不行的吧,还有在里面加上removeListener方法。

嗯,有道理。应该加个removeListener,我改改 ^_^

另外,最主要的用处是用在时间轴里面,那样用EventSender最方便。

A类是不能直接监听B类的事件的,他通过EventSender里面的instance来间接进行。比如通过target,或者eventName来判断是否B类事件。

留下高见,发表评论

个人信息不会外泄,请放心填写。

姓名和Email必填。

发表评论后,请耐心等待,不要频繁刷新。提交完成后,刷新一下本页即可看到您的评论。^_^

请输入验证字符"g" :
文字广告:你是站长吗?注册阿里妈妈赚广告费

最近发表

归档

全部
Creative Commons License
此 Blog 中的日记
遵循以下授权:
Creative Commons
(创作共用) 授权
.
Google PageRank
本站被Adobe官方MXNA新闻聚合器收录
本站被蓝色理想BXNA收录