[英]Fabric js with gesture how to prevent zooming on touch devices
I'm using fabric js with gestures, but i want to prevent zooming, if zoom is getting more than 4x in and less than 1x out 我正在使用带有手势的fabric js,但是如果缩放超过4倍且少于1倍,我想防止缩放
I've tried to call preventDefault()
and stopPropogation()
functions on the event, but it doesn't stop the zooming 我试图在事件上调用preventDefault()
和stopPropogation()
函数,但它不会停止缩放
event.e.stopPropagation();
Get the deltaY
& getZoom
then you can limit the zoom as below. 获取deltaY
和getZoom
然后可以按以下方式限制缩放getZoom
。
var canvas = new fabric.Canvas('c'); var dia1 = new fabric.Circle({ radius: 12, originX: 'center', originY: 'center', fill: 'transparent', strokeWidth: 5, stroke: "red", }); var dia2 = new fabric.Circle({ radius: 5, originX: 'center', originY: 'center', fill: 'red', }); var targetEl = new fabric.Group([dia1, dia2], { originX: 'center', originY: 'center', }); canvas.centerObject(targetEl); canvas.add(targetEl); canvas.renderAll(); //mouse zoom canvas.on('mouse:wheel', function(opt) { var delta = opt.e.deltaY; var pointer = canvas.getPointer(opt.e); var zoom = canvas.getZoom(); zoom = zoom - delta / 200; // limit zoom to 4x in if (zoom > 4) zoom = 4; // limit zoom to 1x out if (zoom < 1) { zoom = 1; canvas.setViewportTransform([1, 0, 0, 1, 0, 0]); } canvas.zoomToPoint({ x: opt.e.offsetX, y: opt.e.offsetY }, zoom); opt.e.preventDefault(); opt.e.stopPropagation(); }); //touch zoom canvas.on({ 'touch:gesture': function(e) { if (eetouches && eetouches.length == 2) { pausePanning = true; var point = new fabric.Point(e.self.x, e.self.y); if (e.self.state == "start") { zoomStartScale = canvas.getZoom(); } var delta = zoomStartScale * e.self.scale; canvas.zoomToPoint(point, delta); pausePanning = false; // limit zoom to 4x in if (delta > 4) delta = 4; // limit zoom to 1x out if (delta < 1) { delta = 1; canvas.setViewportTransform([1, 0, 0, 1, 0, 0]); } } } });
canvas { border: 1px solid #ccc; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.4.0/fabric.js"></script> <canvas id="c" width="600" height="300"></canvas>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.