2013-02-02 28 views
4

我想知道缩放的innerWith/viewport宽度以便在缩放时缩放。检测Android捏使用JavaScript/Hammer.js缩放innerWidth

如果是低于500像素我要改变与图像:

$("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png"); 

我已经试过这样的事情:

var hammer = new Hammer(document.getElementById("log")); 

hammer.ontransformstart = function(ev) { 
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom 
    if (pziW < 500) { 
     $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png"); 
    } 
}; 
hammer.ontransform = function(ev) { 
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom 
    if (pziW < 500) { 
     $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png"); 
    } 
}; 
hammer.ontransformend = function(ev) { 
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom 
    if (pziW < 500) { 
     $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png"); 
    } 
}; 

但我不知道如何申报innerWidth捏放大缩小。

这里是的jsfiddle:

http://jsfiddle.net/nLvu6/

有人有一个答案?

回答

3

这不是你想检测的innerWidth。

看看传递给锤功能的EV变量:

distance: 0 
distanceX: 0 
distanceY: 0 
originalEvent: TouchEvent 
position: Object 
rotation: 124.85234015769826 
scale: 2.0725083746457824 
touches: Array[0] 
type: "transformend" 
__proto__: Object 

scale: 2.0725083746457824是我们想要的。如果比例高于或低于某个阈值,则执行图像替换功能。

我已经分叉了你的JSFiddle。在这里看到:http://jsfiddle.net/BFBrU/14/

Before pinchAfter pinch

+0

我试着计算innerWidth:pziW = $(窗口).innerWidth()/ 2 * ev.scale;但是它一直返回0,我的计算有什么问题吗?更新JSFiddle:http://jsfiddle.net/nLvu6/20/ – user1480019

+0

另外在另一个论坛上,有人提出了这个计算:在页面开始:将viewport-width变量设置为初始宽度ontransformstart:zoom variable = ev.scale(它会是1.0)ontransform:计算变焦delta(缩放变量 - = ev.scale)viewport-width + = viewport width * zoom delta zoom variable = ev.scale我怎样才能把它放在一个计算中?我试过这个:http://jsfiddle.net/nLvu6/22/和“hammer.bind”:http://jsfiddle.net/nLvu6/21/ – user1480019