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之间,所以这个值可能变得越来越小,以便在手势开始时看到差异。