在cocos2dx 3.x版本已经被弃用,改用EventDispatcher代替。

观察者模式是MVC模式的一种,一个model可以对应很多个观察者view,当model收到事件通知时,对应的view

马上处理事件。比如在游戏中,网络发送http,当有数据回来时,需要改变界面的一些状态或者更新数据等等操作。

在Node节点中,有一个EventDispatcher* _eventDispatcher属性,可以通过getEventDispatcher()方法获取,

EventDispatcher类里面主要是通过一个vector存储所有要监听的事件,然后在接收信息时,遍历所有要监听的

消息,判断消息类型进行毁掉。

以下是使用EventDispatcher的lua方法:

local layer = cc.Layer:create()--创建一个layer

self:addChild(layer)--添加到场景中

self._counter = 0

local function eventCustomListener1(event)--创建一个事件回调函数

self._counter = self._counter + 1

release_print(self._counter)

end

local listener1 = cc.EventListenerCustom:create("testEvent",eventCustomListener1)--创建一个监听事件,第一个参数是事件的键值名(事件名)

第二个参数是回调函数。

local function eventCustomListener2(event)--创建第二个事件

release_print(event._myName)

end

local listener2 = cc.EventListenerCustom:create("testEvent",eventCustomListener2)

local eventDispatcher = layer:getEventDispatcher()--获取节点的EventDispatcher

eventDispatcher:addEventListenerWithFixedPriority(listener1,1)--把两个监听事件添加到eventDispatcher,并且设置权重

eventDispatcher:addEventListenerWithFixedPriority(listener2,2)

使用eventDispatcher:dispatchEvent()响应所有对应事件名的事件

local event = cc.EventCustom:new("testEvent")

   event._myName = "I'm HemJohn"

eventDispatcher:dispatchEvent(event)

调用三次dispatchEvent结果如下:

转载请注明出处,from 博客园HemJohn

cocos2dx观察者模式EventListenerCustom的使用(代替NotificationCenter)的更多相关文章

  1. 【转】Cocos2d - 观察者模式NotificationCenter

    http://shahdza.blog.51cto.com/2410787/1611575 [唠叨] 观察者模式 也叫订阅/发布(Subscribe/Publish)模式,是 MVC( 模型-视图-控 ...

  2. cocos2d-x 源代码分析 : EventDispatcher、EventListener、Event 源代码分析 (新触摸机制,新的NotificationCenter机制)

    源代码版本号来自3.x,转载请注明 cocos2d-x 源代码分析总文件夹 http://blog.csdn.net/u011225840/article/details/31743129 1.继承结 ...

  3. cocos2d-x NotificationCenter

    转自:http://www.xinze.me/cocos2d-x-ccnotificationcenter/ 在前端开发中,JS和as3中都有很好的监听机制, 我们使用Event的addEventLi ...

  4. Cocos2d-x 3.x游戏开发之旅

    Cocos2d-x 3.x游戏开发之旅 钟迪龙 著   ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x ...

  5. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...

  6. cocos2dx 魔塔项目总结(一)

    <魔塔天城>发布已经有半年的时间了,一直想找时间来总结一下这个项目,但总是一拖再拖.如果再这么拖下去,就永远都不会有时间来写这个总结了,时间总是挤出来的. 魔塔天城使用的cocos2dx ...

  7. 整理Cocos2d-x 面试题解

    昨天听了腾讯2015校招的在线宣讲会,看到了游戏技术大拿Steven,他总结了需要的达人得爱技术,能坚持,够挑剔.马上校招了,加油吧,骚年~ 网上关于cocos2d-x的面试题比较少,这里搜集和整理了 ...

  8. cocos2dx+lua注册事件函数详解 事件

    coocs2dx 版本 3.1.1 registerScriptTouchHandler             注册触屏事件 registerScriptTapHandler             ...

  9. Cocos2d-x数据相关的类用法简介(附示例)

    (搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...

随机推荐

  1. 洛谷P3668 [USACO17OPEN]Modern Art 2 现代艺术2

    P3668 [USACO17OPEN]Modern Art 2 现代艺术2 题目背景 小TY的同学HF也想创作艺术 HF只有一块长条状的画布(画条),所以每一次涂色只能涂上连续几个单位的颜料,同样新的 ...

  2. Java基础--基本规则、语法

    一.关键字.保留字.标识符.常量.变量 1.关键字:使用某种语言赋予特殊含义的单词. 2.保留字:没有赋予特殊含义,但以后可能会使用的单词. 3.标识符:自定义的单词,以数字.字母.下划线以及$符组成 ...

  3. DOM事件-冒泡、捕获、传播、委托

    事件捕获 以点击事件为例事,同类型事件会由根元素开始触发,向内传播,一直到目标元素.从外到内依次触发:根—目标的祖先素—目标的父元素—目标元素. 事件冒泡 根事件捕获截然相反.发生点击事件时,事件会从 ...

  4. for循环,递归,函数封装作业

    /******求100以内,所有的奇数和,求100以内,所有的偶数积*******/ // for循环方法   var sum=0; var sum1=1; for(var i=1;i<=100 ...

  5. python bbs项目代码分析

    def index(request, *args, **kwargs): condition={} type_id = int(kwargs.get("type_id")) if ...

  6. IP服务-8-WCCP

    WCCP(网页缓存通信协议) 内容引擎负责将频繁访问的数据收集到本地,通常是HTTP流量,当主机访问相同页面时,可以直接通过内容引擎为主机提供相应内容,而无需通过WAN进行访问.WCCP与网页代理并不 ...

  7. 企业级Web Nginx 服务优化

    企业级Web Nginx 服务优化 http://blog.51cto.com/search/result?q=%E4%BC%81%E4%B8%9A%E7%BA%A7Web+Nginx+%E6%9C% ...

  8. IIS服务器访问网站出现403错误的解决方法

    最近用织梦做了一个网站,因为织梦会在一个文件夹中生成网站的静态页面,而我们单击某个栏目时,一般程序都是直接去寻找该文件夹中的index.html文件的,当服务器中默认的索引文件不包括index.htm ...

  9. js得到当前页面的url信息

    所有的代码都是可用,而且附了图片的,不过是直接用我自己的文章地址,所以有些显示的有点奇怪. 大家可以找个网址试试代码是否可行. 1,设置或获取对象指定的文件名或路径. console.log(wind ...

  10. 一道笔试题和UML思想 ~

    一句软件工程界的名言,让我想起了一个和一道笔试题有关的故事.希望更多的人了解 UML 背后的思想比他的语法更重要,是笔者写作本文的一点小愿望. 一.从一句软件工程名言说起 对很多事情的处理上,东西方都 ...