9. 手势
在iPhone上,手势是两个手指的行为:缩放(放大和缩小)和旋转。前面我们已经学习了touches和targetTouches事件包含了每个手指触摸设备的信息,使用这些事件也处理手势,如放大和平移,但还有更方便的gesture事件可用,你可以监听下面的事件:
l gesturestart
l gestureend
l gesturechange
在接下来的例子中我们将监听gesturechange事件,然后使用webkitTransform样式属性缩放和旋转一个div,像往常一样,事件监听器接收event对象参数,event对象包含以下属性:
l event.scale – 不缩放时值为1,缩小时值小于1,放大时值大于1
l event.rotate – 旋转的角度
代码和前面的触摸—拖动代码非常类似:
window.addEventListener('load', function() {
var b = document.getElementById('box'),
bstyle = b.style;
b.addEventListener('gesturechange', function(event) {
event.preventDefault();
bstyle.webkitTransform = 'scale(' + event.scale + ') ' +
'rotate('+ event.rotation + 'deg)';
}, false);
}, false);
var b = document.getElementById('box'),
bstyle = b.style;
b.addEventListener('gesturechange', function(event) {
event.preventDefault();
bstyle.webkitTransform = 'scale(' + event.scale + ') ' +
'rotate('+ event.rotation + 'deg)';
}, false);
}, false);
例12(链接:http://www.sitepoint.com/examples/iphone-development-12tips/gesture.html)显示了运行这段代码的效果,缩放和旋转一个div。如果你在iPhone模拟器中浏览,按住选项键,将会显示两个灰色的点,表示两个手指,当你拖动鼠标时,可以将圆点移进和移出。
图 8 缩放和旋转