简体   繁体   English

带手势的Fabric JS如何防止触摸设备放大

[英]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. 获取deltaYgetZoom然后可以按以下方式限制缩放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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM