convertToNodeSpace 把触摸点转换到节点局部空间,然后节点位置设到此位置,但是结果貌似不对,而且会一直颤抖。test.rar (2.7 MB)
不知道你是什么用意?
简而言之,就是把节点设置到触屏的位置。
由于触屏消息里的位置信息是相对世界坐标系的,而节点是相对本身的局部坐标系,所以要转换下。
cc.Class({
extends: cc.Component,
properties: {
touchPt: {
default: null,
type: cc.Node,
displayName: "节点"
},
},
onLoad: function () {
function onTouchMove(event) {
var pt = this.convertTouchToNodeSpaceAR(event);
this.x = pt.x;
this.y = pt.y;
}
this.touchPt.on('touchmove', onTouchMove, this.touchPt);
},
});
自己以为逻辑差不多就是这样子的,但结果是:拖动过程中,节点会一直抖动,而且位置也不对。
貌似可以了,原来得用 getDeltaX、getDeltaY。
function onTouchMove(event) {
var x = event.getDeltaX();
var y = event.getDeltaY();
this.x += x;
this.y += y;
}
我说一下你原来为什么不可以。因为节点的x,y相对的是它的父坐标系,而你转换成的是相对节点自己的坐标系。你应该转换到父节点的坐标系应该就可以了。deltaX, deltaY就没有这种问题。
2赞
楼上正解

1赞