分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

html5手势操作与多指操作封装与详解

发布时间:2023-09-06 02:34责任编辑:傅花花关键词:暂无标签

手势函数封装如下:

function gesture(init){
    var isGesture = false;
    var el = init.el;
    var startDis = 0;
    var startDeg = 0;
    //console.log(getDeg({pageX:0,pageY:0},{pageX:-100,pageY:100}));
    el.addEventListener(‘touchstart‘, function(e) {
        var touch = e.touches;//当前屏幕上的手指列表
        if(touch.length >= 2){//当前屏幕有两根以上的手指
            isGesture = true;
            startDis = getDis(touch[0],touch[1]);//start时两根手指之间的距离
            startDeg = getDeg(touch[0],touch[1]);//start时,两根手指形成的直线 和 x轴形成一个逆时针的夹角
            init.start&&init.start.call(el,e);
            //this.innerHTML = startDis;
        }
    });
    el.addEventListener(‘touchmove‘, function(e) {
        var touch = e.touches;//当前屏幕上的手指列表
        if(touch.length >= 2&&isGesture){//当前屏幕有两根以上的手指
            var nowDis = getDis(touch[0],touch[1]);// move时两根手指之间的距离
            var nowDeg = getDeg(touch[0],touch[1]);//move时,两根手指形成的直线 和 轴形成一个逆时针的夹角
            e.scale = nowDis/startDis;
            e.rotation = nowDeg - startDeg;
            init.change&&init.change.call(el,e);
        }
    });
    el.addEventListener(‘touchend‘, function(e) {
        if(isGesture){
            init.end&&init.end.call(el,e);
        }
        isGesture = false;
    });
    function getDis(point,point2){
        var x = point2.pageX - point.pageX;
        var y = point2.pageY - point.pageY;
        return Math.sqrt(x*x + y*y);
    }
    function getDeg(point,point2){
        var x = point2.pageX - point.pageX;
        var y = point2.pageY - point.pageY;
        return Math.atan2(y,x)*180/Math.PI;
    }
}

html5手势操作与多指操作封装与详解

原文地址:https://www.cnblogs.com/pomelott/p/10453552.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved