官方案例的缩放只能从图片的中心进行缩放,这是我根据案例来改的,可是效果并不好
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];
var delta1 = touch1.getDelta(), delta2 = touch2.getDelta();
var touchPoint1 = self.node.convertTouchToNodeSpaceAR(touch1);
var touchPoint2 = self.node.convertTouchToNodeSpaceAR(touch2);
//缩放
var distance = cc.pSub(touchPoint1, touchPoint2);
var delta = cc.pSub(delta1, delta2);
var scale = 1;
let width = self.target.width;
let height = self.target.height;
let midPointX = touchPoint1.x > touchPoint2.x ? ((touchPoint1.x + touchPoint2.x) / 2) : ((touchPoint2.x + touchPoint1.x) / 2);
let midPointY = touchPoint1.y > touchPoint2.y ? ((touchPoint1.y + touchPoint2.y) / 2) : ((touchPoint2.y + touchPoint1.y) / 2);
let newAnchorX = midPointX / width;
let newAnchorY = midPointY / height;
self.target.setAnchorPoint(cc.v2(Math.fround(newAnchorX), Math.fround(newAnchorY)));
if (Math.abs(distance.x) > Math.abs(distance.y)) {
scale = (distance.x + delta.x) / distance.x * self.target.scale;
}
else {
scale = (distance.y + delta.y) / distance.y * self.target.scale;
}
self.target.scale = scale < 0.1 ? 0.1 : (scale > 2 ? 2 : scale);