V2组件事件模型part1-事件分派器(eventDispatcher)
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-13
型)。使用这个功能,你需要在你的分派器对象中定义一个以[事件名+”Handler”]命名的方法,比如如果有一个click事件,则应定义为”clickHandler”。它将传递2)中提到的事件对象。
4) dispatcher可以接受Object、MovieClip或者单纯的函数(function)作为监听器。当你使用它们作为监听器的时候,还是会有稍许的差别:
如果使用Object、MovieClip建立监听器,则有两种方法来捕获事件:
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分派的事件的唯一的办法就是察看传递的eventObj的target属性。但如果你定义一系列函数作为监听器,你就可以为任何被分派的事件指定具体如何执行。 // 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建立一个对象完成相同的任务。 在今后我还会介绍关于UIEventDispatcher和LowLevelEvent的内容,敬请关注。 全文完。 关键词:组件 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: this的使用下一篇: 对Flash游戏初学者说的话
关于V2组件事件模型part1-事件分派器(eventDispatcher)的所有评论