7***@qq.com
7***@qq.com
  • 发布:2019-10-26 23:55
  • 更新:2020-03-28 22:04
  • 阅读:631

【报Bug】touchmove 时间受 plus.screen.setBrightness 影响无法连贯监听

分类:HTML5+

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

                        var getAngle = function(angx, angy) {  
                return Math.atan2(angy, angx) * 180 / Math.PI;  
            };  

            var getDirection = function(startx, starty, endx, endy) {  
                var angx = endx - startx;  
                var angy = endy - starty;  
                var result = 0;  
                //如果滑动距离太短  
                if (Math.abs(angx) < 2 && Math.abs(angy) < 2) {  
                    return result;  
                }  
                var angle = getAngle(angx, angy);  
                if (angle >= -135 && angle <= -45) {  
                    result = 1;  
                } else if (angle > 45 && angle < 135) {  
                    result = 2;  
                } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {  
                    result = 3;  
                } else if (angle >= -45 && angle <= 45) {  
                    result = 4;  
                }  
                return result;  
            };  

            document.addEventListener('plusready', () => {  
                let startx = null;  
                let starty = null;  
                let endx = null  
                let endy = null;  

                window.addEventListener("touchstart", (e) => {  
                    startx = e.touches[0].pageX;  
                    starty = e.touches[0].pageY;  
                }, false);  

                window.addEventListener("touchmove", (e) => {  
                    endx = e.changedTouches[0].pageX;  
                    endy = e.changedTouches[0].pageY;  
                    var direction = getDirection(startx, starty, endx, endy);  
                    if (direction === 3) {  
                        //向下滑动  
                        var brig = plus.screen.getBrightness();  
                        plus.screen.setBrightness(brig - 0.2);  
                        console.log('向下');  
                    }  
                    if (direction === 4) {  
                        //向上滑动  
                        var brig = plus.screen.getBrightness();  
                        plus.screen.setBrightness(brig + 0.2);  
                        console.log('向上');  
                    }  
                });  

            });

重现步骤

[步骤]

当滑动屏幕的时候,按道理是touchmove 时间是能一直接接收到数据的,然后只要执行 plus.screen.setBrightness ,touchmove就中断监听。如果把 plus.screen.setBrightness 注释掉,则没有问题。我要时间的功能就是,滑动屏幕能根据上下方向去调整亮度

IDE运行环境说明

HBuilderX

[IDE版本号]

2.3.7.20191024

[mac版本号]

10.14.6

联系方式

70800356

2019-10-26 23:55 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com (作者)

window.addEventListener("touchmove", (e) => {
可以在这之后加入一行console.log();
就可以还原发现 touchmove 是中断监听的

cocos

cocos

同样遇到这个问题

该问题目前已经被锁定, 无法添加新回复