Javascript JS:在事件侦听器中以数学方式减少缩放值

Javascript JS:在事件侦听器中以数学方式减少缩放值,javascript,jquery,mobile,gesture,addeventlistener,Javascript,Jquery,Mobile,Gesture,Addeventlistener,我正在这样做: $(document).ready(function() { var dom = document.body, fs = 16, min = 16, max = 100, scale; dom.addEventListener("gesturechange", gestureChange, false); function gestureChange(e) { e.pr

我正在这样做:

$(document).ready(function() {

    var dom = document.body,
        fs = 16,
        min = 16,
        max = 100,
        scale;

    dom.addEventListener("gesturechange", gestureChange, false);

    function gestureChange(e) {

        e.preventDefault();

        scale = e.scale;
        fs = Math.round(fs*scale);

        if ( fs <= max && fs >= min )
            $('#element').css('width', fs+'px');

        if ( fs > max ) fs = max;
        if ( fs < min ) fs = min;
    }

});
$(文档).ready(函数(){
var dom=document.body,
fs=16,
最小=16,
最大值=100,
规模
dom.addEventListener(“gesturechange”,gesturechange,false);
功能手势更改(e){
e、 预防默认值();
比例=e.比例;
fs=数学圆(fs*标度);
如果(fs=min)
$('#element').css('width',fs+'px');
如果(fs>max)fs=max;
如果(fs
因此,当我在iPhone上做收缩/缩放手势时,
#元素
的宽度会增加。
fs
是它增加的值。然而,现在的缩放和增长速度太快了。所以只要我在屏幕上稍微移动一下手指,宽度就会增加很多

我想知道我如何以及是否可以将fs值“乘以”(或任何东西)一定量,从而使整个体验变慢?我只是想让我的变焦速度慢一点


有什么想法吗?

只需将您自己的比例因子应用于整个比例计算:

var myScale = 5; // Test which value is best suited for your needs
fs = Math.round(fs*(scale/myScale));

我不认为这个问题有一个正确的答案,但上次我编写了这样的程序,将手指之间的距离除以缩放因子1000,再加上基本缩放因子(100),对我来说很有效。你是如何计算手指之间的距离的?你介意给我看一下你的方法吗?(很抱歉回答得太晚)毕达哥拉斯定理起作用:
var dist=((p1x-p2x)*(p1x-p2x))+((p1y-p2y)*(p1y-p2y))以及从何处获取点
p1
p2
?这是两个手指坐标:
var p1x=e.touchs[0]。clientX;var p1y=e.touchs[0].clientY;var p2x=e.touchs[1].clientX;var p2y=e.touchs[1].clientY谢谢,问题是,这只是改变了转换的“起点”。当我现在放大时,宽度的增加有点“延迟”。
#元素
的大小调整似乎有点慢,但它不像我希望的那样平滑。我想将大小调整从缩放手势一对一转换为对象。您是否尝试过较小的值,如2?我刚读到这个值可能在0和2之间,所以这个值可能变得越来越小,以便在手势开始时看到差异。