1 var self = this; 2 this.touchListener = cc.EventListener.create({ 3 event: cc.EventListener.TOUCH_ONE_BY_ONE, 4 /* 5 可选event类型列表: 6 7 cc.EventListener.TOUCH_ONE_BY_ONE (单点触摸) 8 cc.EventListener.TOUCH_ALL_AT_ONCE (多点触摸) 9 cc.EventListener.KEYBOARD (键盘) 10 cc.EventListener.MOUSE (鼠标) 11 cc.EventListener.ACCELERATION (加速计) 12 cc.EventListener.CUSTOM (自定义) 13 14 */ 15 swallowTouches: true, // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞掉事件,不再向下传递。 16 onTouchBegan:function(touch, event) //实现 onTouchBegan 事件处理回调函数 17 { 18 19 20 21 return self.checkHit(touch.getLocation()); //传递坐标 22 }, 23 24 onTouchMoved:function(touch, event) //实现onTouchMoved事件处理回调函数, 触摸移动时触发 25 { 26 self.movePickedHitTile(touch.getLocation()); 27 return true; 28 }, 29 30 onTouchEnded:function(touch, event)// 实现onTouchEnded事件处理回调函数 31 { 32 self.dropTile(touch.getLocation()); 33 return true; 34 } 35 }); 36 37 cc.eventManager.addListener(this.touchListener, node); // 添加监听器到管理器 38 /* 39 这里的cc.eventManager 是一个单例对象,可直接拿来使用。 40 通过调用 addListener 函数可以将listener加入到管理器中。 41 需要注意的是第二个参数 42 如果传入的是一个Node对象,则加入的是SceneGraphPriority(精灵以显示优先级) 类型的listener 43 如果是一个数值类型的参数,则加入到的是FixedPriority 类型的listener。 44 */
onTouchBegan:
1 checkHit:function(event) 2 { 3 var target = event.getCurrentTarget(); // 获取事件所绑定的 target, 通常是cc.Node及其子类 4 5 // 获取当前触摸点相对于按钮所在的坐标 6 var locationInNode = target.convertToNodeSpace(touch.getLocation()); 7 var s = target.getContentSize(); 8 var rect = cc.rect(0, 0, s.width, s.height); 9 10 if (cc.rectContainsPoint(rect, locationInNode)) { // 判断触摸点是否在按钮范围内 11 console.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y); 12 target.opacity = 180; 13 return true; 14 } 15 return false; 16 }
onTouchMoved:
1 movePickedHitTile:function(event) 2 { 3 var target = event.getCurrentTarget(); 4 var delta = touch.getDelta(); //获取事件数据: delta 5 target.x += delta.x; 6 target.y += delta.y; 7 },
onTouchEnded:
1 dropTile:function(pt) 2 { 3 // this.showDiscardTip(false); 4 // 5 // this.pickedTile.setScale(1); 6 // 7 // //出牌 8 // if(this.discardable(pt)) 9 // { 10 // this.discard(); 11 // } 12 // else 13 // { 14 // if(this.hitTestTile(this.hitTile, pt)) 15 // { 16 // var tileSize = mb.getTileSize(this.hitTile.pos, this.hitTile.state); 17 // var ptWorld = this.hitTile.convertToWorldSpaceAR(cc.p(0, 0)); 18 // this.pickedTile.x = ptWorld.x; 19 // this.pickedTile.y = ptWorld.y + tileSize.height / 3; 20 // } 21 // else 22 // { 23 // mb.TilePool.getInstance().restoreTile(this.pickedTile); 24 // this.pickedTile = null; 25 // 26 // this.hitTile.setVisible(true); 27 // this.hitTile = null; 28 // } 29 // } 30 31 }, 32