cc.Class({
extends: cc.Component,
properties: {
canvas: cc.Node,
target: cc.Node
},
onLoad: function () {
var self = this, parent = this.node.parent;
self.canvas.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
var touches = event.getTouches();
if (touches.length >= 2) {
var touch1 = touches[0], touch2 = touches[1];
// 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
var delta1 = touch1.getDelta(), delta2 = touch2.getDelta();
// 将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
var touchPoint1 = parent.convertToNodeSpaceAR(touch1.getLocation());
//用event.getTouches() 获取触摸事件的集合, touch1.getLocation() 获取触摸点的集合
var touchPoint2 = parent.convertToNodeSpaceAR(touch2.getLocation());
//缩放
var distance = touchPoint1.sub(touchPoint2);
var delta = delta1.sub(delta2);
var scale = 1;
//如果横向移动大于纵向移动,就缩放x
if (Math.abs(distance.x) > Math.abs(distance.y)) {
scale = (distance.x + delta.x) / distance.x * self.target.scale;
}
//如果横向移动小于纵向移动,就缩放y
else {
scale = (distance.y + delta.y) / distance.y * self.target.scale;
}
self.target.scale = scale < 0.1 ? 0.1 : scale;
}
}, self.node);
}
// self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
// var touches = event.getTouches();
// if (touches.length < 2) {
// var touch1 = touches[0];
// // 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
// var delta1 = touch1.getDelta();
// // 将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
// // var touchPoint1 = parent.convertToNodeSpaceAR(touch1.getLocation());
// var rotateBy = cc.rotateBy(.3, delta1.x * 2);
// self.node.runAction(rotateBy);
// }
// }, self.node);
// // 如题所想,需要在TOUCH_MOVE 时,立即执行 rotateBy动作,真机上测试发现,单手指 慢慢TOUCH_MOVE,
// //完全不执行rotateBy 动作,当单手指,快速滑动时,则会被执行,请问大神们有什么好的处理方法吗?
});
const i18n = require(‘i18n’);
cc.Class({
extends: cc.Component,
properties: {
canvas: cc.Node,
touchLocationDisplay: {
default: null,
type: cc.Label
},
follower: {
default: null,
type: cc.Node
},
followSpeed: 200
},
// use this for initialization
onLoad: function () {
var self = this;
self.moveToPos = cc.v2(0, 0);
self.isMoving = false;
self.canvas.on(cc.Node.EventType.TOUCH_START, function (event) {
var touches = event.getTouches();
var touchLoc = touches[0].getLocation();
self.isMoving =