touchmove中嵌套touchend 的问题

 var startX, startY;
    document.addEventListener('touchstart',function (ev) {
        startX = ev.touches[0].pageX;
        startY = ev.touches[0].pageY;
    }, false);
    var nowAngle=null;
    document.addEventListener('touchmove',function (ev) {
        var endX, endY;
        endX = ev.changedTouches[0].pageX;
        endY = ev.changedTouches[0].pageY;
        var direction = GetSlideDirection(startX, startY, endX, endY);
        var distance=startX-endX;
        var angle=distance/5;
        if(angle>45){
            angle==45
        }
        else if(angle<-45){
            angle==-45
        }

        // console.log(distance);
        console.log(angle);
        nowAngle=angle;
        if(direction==3){
            $('.earch').css({'transform':'rotate('+nowAngle+'deg)','-webkit-transform':'rotate('+nowAngle+'deg)'})
            //>45度但没到90度转到下一建筑 也就是直接旋转90度
            document.addEventListener('touchend',function (e) {
                e.stopPropagation();
                console.log(angle);
                nowAngle+=angle;
                if(angle>=30){
                    console.log('aaa');
                    nowAngl=-45;
                    $('.earch').css({'transform':'rotate(48deg)','-webkit-transform':'rotate(48deg)'})
                }
                else if(angle<30){
                    nowAngl=0;
                    console.log('bbb');
                    $('.earch').css({'transform':'rotate(0deg)','-webkit-transform':'rotate(0deg)'})
                }
                // console.log(nowAngle)
            })

        }
        if(direction==4){
            console.log(nowAngle)
            $('.earch').css({'transform':'rotate('+nowAngle+'deg)','-webkit-transform':'rotate('+nowAngle+'deg)'})
        }
    }, false);

clipboard.png

touchend的时候不应该只打印一条么

阅读 2k
2 个回答

不能这么写,就是因为想你图片那样逻辑会乱。

你这样写touchmove触发一次就注册一个touchend事件,滑动下就注册很多个touchend事件,松开手当然触发所有注册的touchend事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题