Cocos2dx-JS的EventManager

1. 创建监听器

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. var listener = cc.EventListener.create({  
  2.             event: cc.EventListener.TOUCH_ONE_BY_ONE,  
  3.             swallowTouches: true,  
  4.             onTouchBegan: function (touch, event) {  
  5.                 var locationInNode = selfPointer.convertToNodeSpace(touch.getLocation());  
  6.                 var s = selfPointer.getContentSize();  
  7.                 var rect = cc.rect(0, 0, s.width, s.height);  
  8.   
  9.                 if (cc.rectContainsPoint(rect, locationInNode)) {  
  10.                     selfPointer.setColor(cc.color.RED);  
  11.                     return true;  
  12.                 }  
  13.                 return false;  
  14.             },  
  15.             onTouchMoved: function (touch, event) {  
  16.                 //this.setPosition(this.getPosition() + touch.getDelta());  
  17.             },  
  18.             onTouchEnded: function (touch, event) {  
  19.                 selfPointer.setColor(cc.color.WHITE);  
  20.                 if(selfPointer._removeListenerOnTouchEnded)  
  21.                     cc.eventManager.removeListener(selfPointer._listener);  
  22.             }  
  23.         });  

2. 加入监听器

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. cc.eventManager.addListener(listener, this);  
3. ToggleMenuItem加入监听以及移除监听

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. var toggleItem = cc.MenuItemToggle.create(cc.MenuItemFont.create("Enabled"), cc.MenuItemFont.create("Disabled"),  
  2.           function (sender) {  
  3.               if (enable) {  
  4.                   cc.eventManager.removeListener(listener1);  
  5.                   statusLabel.setString("The sprite could not be touched!");  
  6.                   enable = false;  
  7.               } else {  
  8.                   cc.eventManager.addListener(listener1, sprite1);  
  9.                   statusLabel.setString("The sprite could be touched!");  
  10.                   enable = true;  
  11.               }  
  12.           });  
  13.   
  14.       toggleItem.setPosition(origin.x + size.width/2, origin.y + 80);  
  15.       var menu = cc.Menu.create(toggleItem);  
  16.       menu.setPosition(0, 0);  
  17.       menu.setAnchorPoint(0, 0);  
  18.       this.addChild(menu, 1);  

4.自定义事件

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. this._listener1 = cc.EventListener.create({  
  2.           event: cc.EventListener.CUSTOM,  
  3.           eventName: "game_custom_event1",  
  4.           callback: function(event){  
  5.               statusLabel.setString("Custom event 1 received, " + event.getUserData() + " times");  
  6.           }  
  7.       });  
  8.       cc.eventManager.addListener(this._listener1, 1);  
  9.   
  10.       var sendItem = cc.MenuItemFont.create("Send Custom Event 1"function(sender){  
  11.           ++selfPointer._item1Count;  
  12.           var event = new cc.EventCustom("game_custom_event1");  
  13.           event.setUserData(selfPointer._item1Count.toString());  
  14.           cc.eventManager.dispatchEvent(event);  
  15.       });  
  16.       sendItem.setPosition(origin.x + size.width/2, origin.y + size.height/2);  

5.键盘事件

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. cc.eventManager.addListener({  
  2.           event: cc.EventListener.KEYBOARD,  
  3.           onKeyPressed:  function(keyCode, event){  
  4.               var label = event.getCurrentTarget();  
  5.               label.setString("Key " + String.fromCharCode(keyCode) + "(" + keyCode.toString()  + ") was pressed!");  
  6.           },  
  7.           onKeyReleased: function(keyCode, event){  
  8.               var label = event.getCurrentTarget();  
  9.               label.setString("Key " + String.fromCharCode(keyCode) + "(" + keyCode.toString()  + ") was released!");  
  10.           }  
  11.       }, statusLabel);  

6.加速事件

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. cc.eventManager.addListener({  
  2.             event: cc.EventListener.ACCELERATION,  
  3.             callback: function(acc, event){  
  4.                 var target = event.getCurrentTarget();  
  5.                 var ballSize  = target.getContentSize();  
  6.                 var ptNow  = target.getPosition();  
  7.   
  8.                 //cc.log("acc: x = " + acc.x + ", y = " + acc.y);  
  9.   
  10.                 target.x = SpriteAccelerationEventTest._fix_pos(ptNow.x + acc.x * 9.81,  
  11.                     (cc.visibleRect.left.x + ballSize.width / 2.0), (cc.visibleRect.right.x - ballSize.width / 2.0));  
  12.                 target.y = SpriteAccelerationEventTest._fix_pos(ptNow.y + acc.y * 9.81,  
  13.                     (cc.visibleRect.bottom.y + ballSize.height / 2.0), (cc.visibleRect.top.y - ballSize.height / 2.0));  
  14.             }  
  15.         }, sprite);  

7.回调函数

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. this.runAction(cc.Sequence.create(cc.DelayTime.create(5.0),  
  2.            cc.CallFunc.create(function () {  
  3.                this._spriteSaved = true;  
  4.                this._sprite.retain();  
  5.                this._sprite.removeFromParent();  
  6.            }, this),  
  7.            cc.DelayTime.create(5.0),  
  8.            cc.CallFunc.create(function () {  
  9.                this._spriteSaved = false;  
  10.                this.addChild(this._sprite);  
  11.                if(!cc.sys.isNative)  
  12.                    cc.eventManager.addListener(listener1, this._sprite);  
  13.                this._sprite.release();  
  14.            }, this)  
  15.        ));  

8.面向切面

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. this._event1 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_UPDATE, this.onEvent1.bind(this));  
  2.         this._event2 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_VISIT, this.onEvent2.bind(this));  
  3.         this._event3 = dispatcher.addCustomListener(cc.Director.EVENT_AFTER_DRAW, function(event) {  
  4.             selfPointer._label3.setString("Draw: " + selfPointer._count3++);  
  5.         });  
  6.         this._event4 = dispatcher.addCustomListener(cc.Director.EVENT_PROJECTION_CHANGED, function(event) {  
  7.             selfPointer._label4.setString("Projection: " + selfPointer._count4++);  
  8.         });  

9.移除监听

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. cc.eventManager.removeListeners(cc.EventListener.TOUCH_ONE_BY_ONE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值