【原】cocos2d-js触摸手势随意拖拽组件

用的cocos creator。最近本人写麻将拖拽出牌时需用到手势。自己简单的了解了下。(本人新手)。实现效果。拖拽一个组件到界面任意位置,组件随手指移动。

cc.Class({

extends: cc.Component,

properties: {

label: {

default: null,

type: cc.Label

},

// defaults, set visually when attaching this script to the Canvas

text: 'Hello, World!',

mySpri:{

default:null,

type:cc.Sprite,

},

myButton:{

default:null,

type:cc.Button,

},

},

// use this for initialization

onLoad: function () {

this.label.string = this.text;

this.addMJTouch(this.mySpri,this.mySpri.node.getPosition());

this.addMJTouch(this.myButton,this.myButton.node.getPosition());

},

//添加触摸手势方法

addMJTouch:function(touchMJSpri,MJOriPosition){

var self=this;

touchMJSpri.node.on(cc.Node.EventType.TOUCH_START,function(event){//开始触摸,也可以只写这一个。

var temp = event.getLocation();

var tempPlayer = touchMJSpri.node.parent.convertToNodeSpaceAR(temp)

touchMJSpri.node.setPosition(tempPlayer);

})

touchMJSpri.node.on(cc.Node.EventType.TOUCH_MOVE,function(event){//移动中

var temp = event.getLocation();

var tempPlayer = touchMJSpri.node.parent.convertToNodeSpaceAR(temp)

touchMJSpri.node.setPosition(tempPlayer) ;

})

touchMJSpri.node.on(cc.Node.EventType.TOUCH_END,function(event){//手指结束触摸

var temp = event.getLocation();//全局坐标

var tempPlayer= touchMJSpri.node.parent.convertToNodeSpaceAR(temp);//转化为局部坐标

if(touchMJSpri==self.mySpri){

touchMJSpri.node.setPosition(tempPlayer) ;//组件最终停留在手指终止的地方

}else{

touchMJSpri.node.setPosition(MJOriPosition) ;//组件停留在组件最初所在位置

}

})

},

// called every frame

update: function (dt) {

},

});

你可能感兴趣的:(【原】cocos2d-js触摸手势随意拖拽组件)