用的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) {
},
});