快速业务通道

V2组件事件模型part1-事件分派器(eventDispatcher)

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13
型)。使用这个功能,你需要在你的分派器对象中定义一个以[事件名+”Handler”]命名的方法,比如如果有一个click事件,则应定义为”clickHandler”。它将传递2)中提到的事件对象。 4) dispatcher可以接受ObjectMovieClip或者单纯的函数(function)作为监听器。当你使用它们作为监听器的时候,还是会有稍许的差别: 如果使用ObjectMovieClip建立监听器,则有两种方法来捕获事件: a) Object或者MovieClip上定义一个与所监听的事件同名的方法。例如,监听click事件,则应建立myObj.click=function(eventObj){//…}; b) Object或者MovieClip上定义一个”handlerEvent(eventObj)”。它将成为一个类的接口(interface),通过它你的监听器可以处理相应被分派的事件(event dispatches)。所有被分派的事件都会传出这个方法,也就意味着你必须察看eventObj.type才能知道具体是哪个事件被触发并且执行相应的代码。 那么在使用组件时具体应该如何做呢?这里给出一个简单的例子。假设场景中有一个Button组件,名为”submitBtn”,你应该这样做以建立一个监听器对象: // Listening object contains a function with the same name as
// the dispatched event
var listeningObj:Object = new Object();
listeningObj.click = function(eventObj:Object):Void {
trace("submitted by " + eventObj.target);
}
submitBtn.addEventListener("click",listeningObj);或者这样:
// Use a central "handleEvent" function to mitigate all events
var listeningObj:Object = new Object();
listeningObj.handleEvent = function(eventObj:Object):Void {
if (eventObj.type == "click") {
trace("submitted by " + eventObj.target);
}
}
submitBtn.addEventListener("click",listeningObj);
或者像V1组件中一样:
// Old school click handler style
submitBtn.clickHandler = function():Void {
trace("submitted by " + this);
}
另外,使用一个普通的函数作为监听器。假设你想要从不同的分派对象监听相同的事件,如果已经建立了包含click方法的监听对象,那么要区分具体是哪个dispatcher分派的事件的唯一的办法就是察看传递的eventObjtarget属性。但如果你定义一系列函数作为监听器,你就可以为任何被分派的事件指定具体如何执行。 // Use plain functions as listeners and specify which one
// you want to listen for any given event from any given
// dispatcher
function handleSubmit = function(eventObj:Object):Void {
trace("submitted!");
}
function handleReset = function(eventObj:Object):Void {
trace("reset!");
}
submitBtn.addEventListener("click",handleSubmit);
resetBtn.addEventListener("click",handleReset);当然你也可以通过为每个dispatcher建立一个对象完成相同的任务。
在今后我还会介绍关于UIEventDispatcherLowLevelEvent的内容,敬请关注。 全文完。 关键词:组件

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号