app.js中的實現:
1 var HelloWorldLayer = cc.Layer.extend({ 2 3 defualt:null, 4 5 ctor:function () { 6 7 this._super(); 8 mainscene = ccs.load(res.MainScene_json).node; 9 this.addChild(mainscene); 10 11 var sprite1 = ccui.helper.seekWidgetByName(mainscene,"sprite1"); 12 var sprite2 = ccui.helper.seekWidgetByName(mainscene,"sprite2"); 13 var sprite3 = ccui.helper.seekWidgetByName(mainscene,"sprite3"); 14 15 var self = this; 16 var listener1 = cc.EventListener.create({ 17 event: cc.EventListener.TOUCH_ONE_BY_ONE, 18 swallowTouches: true, // 設置是否吞沒事件,在 onTouchBegan 方法返回 true 時吞掉事件,不再向下傳遞。 19 onTouchBegan: function (touch, event) { //實現 onTouchBegan 事件處理回調函數 20 var target = event.getCurrentTarget(); // 獲取事件所綁定的 target, 通常是cc.Node及其子類 21 // 獲取當前觸摸點相對於按鈕所在的坐標 22 var locationInNode = target.convertToNodeSpace(touch.getLocation()); 23 var s = target.getContentSize(); 24 var rect = cc.rect(0, 0, s.width, s.height); 25 26 if (cc.rectContainsPoint(rect, locationInNode)) { // 判斷觸摸點是否在按鈕范圍內 27 cc.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y); 28 target.opacity = 180; 29 if(self.defualt){ // 接受觸摸的精靈顯示在最上層 30 if(self.defualt != target){ 31 target.setLocalZOrder(100); 32 self.defualt.setLocalZOrder(0); 33 self.defualt = target; 34 } 35 }else{ 36 target.setLocalZOrder(100); 37 self.defualt = target; 38 } 39 return true; 40 } 41 return false; 42 }, 43 onTouchMoved: function (touch, event) { //實現onTouchMoved事件處理回調函數, 觸摸移動時觸發 44 // 移動當前按鈕精靈的坐標位置 45 var target = event.getCurrentTarget(); 46 var delta = touch.getDelta(); //獲取事件數據: delta 47 target.x += delta.x; 48 target.y += delta.y; 49 }, 50 onTouchEnded: function (touch, event) { // 實現onTouchEnded事件處理回調函數 51 var target = event.getCurrentTarget(); 52 cc.log("sprite onTouchesEnded.. "); 53 target.setOpacity(255); 54 } 55 }); 56 57 cc.eventManager.addListener(listener1, sprite1); 58 cc.eventManager.addListener(listener1.clone(), sprite2);//此處需要使用clone(),否則只注冊了sprite1的監聽 59 cc.eventManager.addListener(listener1.clone(), sprite3); 60 61 return true; 62 }, 63 }); 64 65 66 var HelloWorldScene = cc.Scene.extend({ 67 onEnter:function () { 68 this._super(); 69 var layer = new HelloWorldLayer(); 70 this.addChild(layer); 71 } 72 });