EventManager
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相关推荐
- cocos2d JS 自定义事件分发器(接收与传递数据) eventManager
简而言之,它不是由系统自动触发,而是人为的干涉 较多情况用于传递数据 var _listener1 = cc.EventListener.create({event: cc.EventListener ...
- Storm-源码分析-EventManager (backtype.storm.event)
Protocol and DataType 大体结构, 定义protocol EventManager, 其实就是定义interface 函数event-manager, 主要做2件事 1. 启动ev ...
- 63.ExtJs事件(自定义事件、on、eventManager)示例
转自:https://blog.csdn.net/leadergg/article/details/5927614?utm_source=blogxgwz5 ExtJs事件(自定义事件.on.even ...
- phalcon: eventManager事件管理(结合dispatcher调度控制器)制作简单的acl
制作简单的acl, dispatcher(专门用来加载或调度或跳转到相应的url地址即XXXcontroller的调度器或控制器,能够在controller执行前对controller进行停止跳转等) ...
- javascript 手势缩放 旋转 拖动支持:hammer.js
原文: https://cdn.rawgit.com/hammerjs/hammer.js/master/tests/manual/visual.html /*! Hammer.JS - v2.0.4 ...
- cocos2d-js 自定义事件监听派发
熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManag ...
- 关于Javascript的内存泄漏问题的整理稿
常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理. 我记得原来在犀牛书<JavaScript: The De ...
- Infopath重复表分页(原创)
using Microsoft.Office.InfoPath; using System; using System.Xml; using System.Xml.XPath; using Syste ...
- Zend Framework 2 中,定制error 的layout
为什么80%的码农都做不了架构师?>>> 404页面在我们平常浏览网页的时候并不会经常碰到,也因此很容易被忽略,在Zend Framework 2中,项目的结构已经默认提供了4 ...
最新文章
- mysql工具使用意义_MySQL性能分析、及调优工具使用详解
- 网站输入正确账号密码页面刷新一下_Folx的密码管理保存网站登陆信息
- 「Python」 ElementTree模块解析xml文件,建议小白阅读全文
- 在 Linux 中查找和删除重复文件
- vue与php接口对接,怎样使用vue项目中api接口
- 中职升高职c语言程序设计教程课后答案,中职C语言教学创新与实践论文
- FireMonkey 平台初探
- 51nod 1836:战忽局的手段
- NASA: Seeing Jupiter(注视木星)
- 快速幂算法(矩阵快速幂还不是很会。。日后会更新)
- 猴子数据分享微信域名防封技术
- scatter python_Python数据可视化之scatter( )函数
- 免费得了一套做自媒体教程,免费分享给大家
- 日志分析(偏linux)
- 揭开Docker的面纱
- 服务器修复oxc0000098,Win10系统无法开机0xc0000098错误怎么办_win10无法开机提示0xc0000098错误代码如何修复...
- 贝塞尔曲线(Bezier)之 QQ 消息拖拽动画效果
- Avoid mutating a prop directly since the value will be overwritten whenever
- hacking8信息流邀请码第二关 代码详解
- 如何解决微信端不能直接跳转浏览器
热门文章
- 等级保护基本要求四级通用要求
- 罗森塔尔效应(皮格马利翁效应)
- php mysql qq登录_php+js+mysql设计的仿webQQ-4登陆和注册
- root用户无法打开xclock_oracle安装过程中图像界面启动问题(xdmcp) | 学步园
- BUG:关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle。
- 新玺配资:指数回调 行情可期
- UICollectionView详解和UITableView的区别
- 解决饿了么ui再次点击弹出框红检验文字还出现问题
- 计算机简史,硬件组成及基本原理
- 今日份PS练习|玉桂狗海报