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