1. 创建监听器

var listener = cc.EventListener.create({event: cc.EventListener.TOUCH_ONE_BY_ONE,swallowTouches: true,onTouchBegan: function (touch, event) {var locationInNode = selfPointer.convertToNodeSpace(touch.getLocation());var s = selfPointer.getContentSize();var rect = cc.rect(0, 0, s.width, s.height);if (cc.rectContainsPoint(rect, locationInNode)) {selfPointer.setColor(cc.color.RED);return true;}return false;},onTouchMoved: function (touch, event) {//this.setPosition(this.getPosition() + touch.getDelta());},onTouchEnded: function (touch, event) {selfPointer.setColor(cc.color.WHITE);if(selfPointer._removeListenerOnTouchEnded)cc.eventManager.removeListener(selfPointer._listener);}});

2. 加入监听器

cc.eventManager.addListener(listener, this);

3. ToggleMenuItem加入监听以及移除监听

  var toggleItem = cc.MenuItemToggle.create(cc.MenuItemFont.create("Enabled"), cc.MenuItemFont.create("Disabled"),function (sender) {if (enable) {cc.eventManager.removeListener(listener1);statusLabel.setString("The sprite could not be touched!");enable = false;} else {cc.eventManager.addListener(listener1, sprite1);statusLabel.setString("The sprite could be touched!");enable = true;}});toggleItem.setPosition(origin.x + size.width/2, origin.y + 80);var menu = cc.Menu.create(toggleItem);menu.setPosition(0, 0);menu.setAnchorPoint(0, 0);this.addChild(menu, 1);

4.自定义事件

  this._listener1 = cc.EventListener.create({event: cc.EventListener.CUSTOM,eventName: "game_custom_event1",callback: function(event){statusLabel.setString("Custom event 1 received, " + event.getUserData() + " times");}});cc.eventManager.addListener(this._listener1, 1);var sendItem = cc.MenuItemFont.create("Send Custom Event 1", function(sender){++selfPointer._item1Count;var event = new cc.EventCustom("game_custom_event1");event.setUserData(selfPointer._item1Count.toString());cc.eventManager.dispatchEvent(event);});sendItem.setPosition(origin.x + size.width/2, origin.y + size.height/2);

5.键盘事件

  cc.eventManager.addListener({event: cc.EventListener.KEYBOARD,onKeyPressed:  function(keyCode, event){var label = event.getCurrentTarget();label.setString("Key " + String.fromCharCode(keyCode) + "(" + keyCode.toString()  + ") was pressed!");},onKeyReleased: function(keyCode, event){var label = event.getCurrentTarget();label.setString("Key " + String.fromCharCode(keyCode) + "(" + keyCode.toString()  + ") was released!");}}, statusLabel);

6.加速事件

cc.eventManager.addListener({event: cc.EventListener.ACCELERATION,callback: function(acc, event){var target = event.getCurrentTarget();var ballSize  = target.getContentSize();var ptNow  = target.getPosition();//cc.log("acc: x = " + acc.x + ", y = " + acc.y);target.x = SpriteAccelerationEventTest._fix_pos(ptNow.x + acc.x * 9.81,(cc.visibleRect.left.x + ballSize.width / 2.0), (cc.visibleRect.right.x - ballSize.width / 2.0));target.y = SpriteAccelerationEventTest._fix_pos(ptNow.y + acc.y * 9.81,(cc.visibleRect.bottom.y + ballSize.height / 2.0), (cc.visibleRect.top.y - ballSize.height / 2.0));}}, sprite);

7.回调函数

 this.runAction(cc.Sequence.create(cc.DelayTime.create(5.0),cc.CallFunc.create(function () {this._spriteSaved = true;this._sprite.retain();this._sprite.removeFromParent();}, this),cc.DelayTime.create(5.0),cc.CallFunc.create(function () {this._spriteSaved = false;this.addChild(this._sprite);if(!cc.sys.isNative)cc.eventManager.addListener(listener1, this._sprite);this._sprite.release();}, this)));

8.面向切面

this._event1 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_UPDATE, this.onEvent1.bind(this));this._event2 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_VISIT, this.onEvent2.bind(this));this._event3 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_DRAW, function(event) {selfPointer._label3.setString("Draw: " + selfPointer._count3++);});this._event4 = dispatcher.addCustomListener(cc.Director.EVENT_PROJECTION_CHANGED, function(event) {selfPointer._label4.setString("Projection: " + selfPointer._count4++);});

9.移除监听

   cc.eventManager.removeListeners(cc.EventListener.TOUCH_ONE_BY_ONE);

EventManager相关推荐

  1. cocos2d JS 自定义事件分发器(接收与传递数据) eventManager

    简而言之,它不是由系统自动触发,而是人为的干涉 较多情况用于传递数据 var _listener1 = cc.EventListener.create({event: cc.EventListener ...

  2. Storm-源码分析-EventManager (backtype.storm.event)

    Protocol and DataType 大体结构, 定义protocol EventManager, 其实就是定义interface 函数event-manager, 主要做2件事 1. 启动ev ...

  3. 63.ExtJs事件(自定义事件、on、eventManager)示例

    转自:https://blog.csdn.net/leadergg/article/details/5927614?utm_source=blogxgwz5 ExtJs事件(自定义事件.on.even ...

  4. phalcon: eventManager事件管理(结合dispatcher调度控制器)制作简单的acl

    制作简单的acl, dispatcher(专门用来加载或调度或跳转到相应的url地址即XXXcontroller的调度器或控制器,能够在controller执行前对controller进行停止跳转等) ...

  5. javascript 手势缩放 旋转 拖动支持:hammer.js

    原文: https://cdn.rawgit.com/hammerjs/hammer.js/master/tests/manual/visual.html /*! Hammer.JS - v2.0.4 ...

  6. cocos2d-js 自定义事件监听派发

    熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManag ...

  7. 关于Javascript的内存泄漏问题的整理稿

    常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理. 我记得原来在犀牛书<JavaScript: The De ...

  8. Infopath重复表分页(原创)

    using Microsoft.Office.InfoPath; using System; using System.Xml; using System.Xml.XPath; using Syste ...

  9. Zend Framework 2 中,定制error 的layout

    为什么80%的码农都做不了架构师?>>>    404页面在我们平常浏览网页的时候并不会经常碰到,也因此很容易被忽略,在Zend Framework 2中,项目的结构已经默认提供了4 ...

最新文章

  1. mysql工具使用意义_MySQL性能分析、及调优工具使用详解
  2. 网站输入正确账号密码页面刷新一下_Folx的密码管理保存网站登陆信息
  3. 「Python」 ElementTree模块解析xml文件,建议小白阅读全文
  4. 在 Linux 中查找和删除重复文件
  5. vue与php接口对接,怎样使用vue项目中api接口
  6. 中职升高职c语言程序设计教程课后答案,中职C语言教学创新与实践论文
  7. FireMonkey 平台初探
  8. 51nod 1836:战忽局的手段
  9. NASA: Seeing Jupiter(注视木星)
  10. 快速幂算法(矩阵快速幂还不是很会。。日后会更新)
  11. 猴子数据分享微信域名防封技术
  12. scatter python_Python数据可视化之scatter( )函数
  13. 免费得了一套做自媒体教程,免费分享给大家
  14. 日志分析(偏linux)
  15. 揭开Docker的面纱
  16. 服务器修复oxc0000098,Win10系统无法开机0xc0000098错误怎么办_win10无法开机提示0xc0000098错误代码如何修复...
  17. 贝塞尔曲线(Bezier)之 QQ 消息拖拽动画效果
  18. Avoid mutating a prop directly since the value will be overwritten whenever
  19. hacking8信息流邀请码第二关 代码详解
  20. 如何解决微信端不能直接跳转浏览器

热门文章

  1. 等级保护基本要求四级通用要求
  2. 罗森塔尔效应(皮格马利翁效应)
  3. php mysql qq登录_php+js+mysql设计的仿webQQ-4登陆和注册
  4. root用户无法打开xclock_oracle安装过程中图像界面启动问题(xdmcp) | 学步园
  5. BUG:关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle。
  6. 新玺配资:指数回调 行情可期
  7. UICollectionView详解和UITableView的区别
  8. 解决饿了么ui再次点击弹出框红检验文字还出现问题
  9. 计算机简史,硬件组成及基本原理
  10. 今日份PS练习|玉桂狗海报