返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么使用HTML5制作屏幕手势解锁功能
  • 631
分享到

怎么使用HTML5制作屏幕手势解锁功能

2024-04-02 19:04:59 631人浏览 薄情痞子
摘要

这篇文章主要介绍怎么使用HTML5制作屏幕手势解锁功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现原理 利用html5的canvas,将解锁的圈圈划出,利用touch事件解锁这

这篇文章主要介绍怎么使用HTML5制作屏幕手势解功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

实现原理 利用html5的canvas,将解锁的圈圈划出,利用touch事件解锁这些圈圈,直接看代码。

function createCircle() {// 创建解锁点的坐标,根据canvas的大小来平均分配半径
 
        var n = chooseType;// 画出n*n的矩阵 
        lastPoint = [];
        arr = [];
        restPoint = [];
        r = ctx.canvas.width / (2 + 4 * n);// 公式计算 半径和canvas的大小有关
        for (var i = 0 ; i < n ; i++) {
            for (var j = 0 ; j < n ; j++) {
                arr.push({
                    x: j * 4 * r + 3 * r,
                    y: i * 4 * r + 3 * r
                });
                restPoint.push({
                    x: j * 4 * r + 3 * r,
                    y: i * 4 * r + 3 * r
                });
            }
        }
        //return arr;
    }

canvas里的圆圈画好之后可以进行事件绑定

function bindEvent() {
        can.addEventListener("touchstart", function (e) {
             var po = getPosition(e);
             console.log(po);
             for (var i = 0 ; i < arr.length ; i++) {
                if (Math.abs(po.x - arr[i].x) < r && Math.abs(po.y - arr[i].y) < r) { // 用来判断起始点是否在圈圈内部
 
                    touchFlag = true;
                    drawPoint(arr[i].x,arr[i].y);
                    lastPoint.push(arr[i]);
                    restPoint.splice(i,1);
                    break;
                }
             }
         }, false);
         can.addEventListener("touchmove", function (e) {
            if (touchFlag) {
                update(getPosition(e));
            }
         }, false);
         can.addEventListener("touchend", function (e) {
             if (touchFlag) {
                 touchFlag = false;
                 storePass(lastPoint);
                 setTimeout(function(){
 
                    init();
                }, 300);
             }
 
         }, false);
    }

接着到了最关键的步骤绘制解锁路径逻辑,通过touchmove事件的不断触发,调用canvas的moveTo方法和lineTo方法来画出折 现,同时判断是否达到我们所画的圈圈里面,其中lastPoint保存正确的圈圈路径,restPoint保存全部圈圈去除正确路径之后剩余的。 Update方法:

function update(po) {// 核心变换方法在touchmove时候调用
        ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
 
        for (var i = 0 ; i < arr.length ; i++) { // 每帧先把面板画出来
            drawCle(arr[i].x, arr[i].y);
        }
 
        drawPoint(lastPoint);// 每帧花轨迹
        drawLine(po , lastPoint);// 每帧画圆心
 
        for (var i = 0 ; i < restPoint.length ; i++) {
            if (Math.abs(po.x - restPoint[i].x) < r && Math.abs(po.y - restPoint[i].y) < r) {
                drawPoint(restPoint[i].x, restPoint[i].y);
                lastPoint.push(restPoint[i]);
                restPoint.splice(i, 1);
                break;
            }
        }
 
    }

最后就是收尾工作,把路径里面的lastPoint保存的数组变成密码存在localstorage里面,之后就用来处理解锁验证逻辑了function storePass(psw) {// touchend结束之后对密码和状态的处理
 

     if (pswObj.step == 1) {
            if (checkPass(pswObj.fpassWord, psw)) {
                pswObj.step = 2;
                pswObj.spassword = psw;
                document.getElementById('title').innerHTML = '密码保存成功';
                drawStatusPoint('#2CFF26');
                window.localStorage.setItem('passwordx', JSON.stringify(pswObj.spassword));
                window.localStorage.setItem('chooseType', chooseType);
            } else {
                document.getElementById('title').innerHTML = '两次不一致,重新输入';
                drawStatusPoint('red');
                delete pswObj.step;
            }
        } else if (pswObj.step == 2) {
            if (checkPass(pswObj.spassword, psw)) {
                document.getElementById('title').innerHTML = '解锁成功';
                drawStatusPoint('#2CFF26');
            } else {
                drawStatusPoint('red');
                document.getElementById('title').innerHTML = '解锁失败';
            }
        } else {
            pswObj.step = 1;
            pswObj.fpassword = psw;
            document.getElementById('title').innerHTML = '再次输入';
        }
 
    }

解锁组件

将这个HTML5解锁写成了一个组件,放在https://GitHub.com/lvming6816077/H5lock

以上是“怎么使用HTML5制作屏幕手势解锁功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 怎么使用HTML5制作屏幕手势解锁功能

本文链接: https://lsjlt.com/news/67414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用HTML5制作屏幕手势解锁功能
    这篇文章主要介绍怎么使用HTML5制作屏幕手势解锁功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现原理 利用HTML5的canvas,将解锁的圈圈划出,利用touch事件解锁这...
    99+
    2024-04-02
  • Android利用手势完成屏幕密码锁功能
    本文实例为大家分享了Android画笔屏幕锁小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.如果使用GestureOverlayView,在xml配置文件中使用...
    99+
    2022-06-06
    密码锁 手势 Android
  • 使用Pyqt5制作屏幕录制界面功能
    目录应用平台窗口设置主体窗口代码划选窗口代码总结最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用p...
    99+
    2024-04-02
  • Android手机屏幕敲击解锁功能代码
    1.前言   现在市面上有不少Android手机支持敲击屏幕解锁,敲击屏幕解锁是一项很实用的功能,但一来只支持敲击屏幕,二来只能用于解锁或锁屏,再者我们应用层的开发者切不进去...
    99+
    2022-06-06
    解锁 Android
  • 使用canvas怎么实现一个手势解锁功能
    使用canvas怎么实现一个手势解锁功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。手势解锁通过手指将屏幕上的九个点依次连接起来形成一个图案,所以叫图案解锁。...
    99+
    2023-06-09
  • 怎么在html5中使用canvas实现手势解锁
    怎么在html5中使用canvas实现手势解锁?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。demo.html<!DOCTYPE html><h...
    99+
    2023-06-09
  • win7自带屏幕录制功能使用(录制屏幕信息及添加批注)
    使用电脑时,我们往往会对桌面上的某些操作出现问题,如果当我们面对无法解决的问题束手无策时,这样只好求人上门帮忙了。哎,如今求人难呀,求人上门更难,如果要是远程解决最好了。在Windows7中系统提供了一个“问...
    99+
    2023-05-29
    win7 屏幕录制 功能 屏幕 录制 添加
  • 使用Canvas怎么实现一个手势控制功能
    使用Canvas怎么实现一个手势控制功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先讲一下思路:首先跟图需求可以知道,作出这样的效果需要一组对象,每个对象有颜色,所占...
    99+
    2023-06-09
  • 使用JavaScript怎么实现自动锁屏功能
    这篇文章将为大家详细讲解有关使用JavaScript怎么实现自动锁屏功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.使用场景有这么一个需求,开发了一套系统,当用户离开桌面或者一段时间不...
    99+
    2023-06-15
  • 云服务器怎么远程控制手机屏幕使用
    如果您想远程控制云服务器中的设备屏幕,您可以按照以下步骤进行操作: 在云服务器中创建一个新用户账户,并为该账户设置远程管理权限: user@hostname password@localhost manager guest @hos...
    99+
    2023-10-26
    远程控制 手机屏幕 服务器
  • 腾讯云服务器怎么操作手机屏幕使用
    首先,我们需要了解什么是手机屏幕。手机屏幕是用来显示屏幕上的图像、文本、视频等内容的设备。手机屏幕可以包括大屏幕、触摸屏、OLED等不同类型的屏幕,而每一种屏幕都有其独特的使用方法和优势。 在操作手机屏幕时,我们可以通过以下几种方式来实现...
    99+
    2023-10-27
    腾讯 手机屏幕 操作
  • Android应用怎么实现屏幕横竖屏切换功能
    Android应用怎么实现屏幕横竖屏切换功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 在AndroidManifest.xml中为Activity设置config...
    99+
    2023-05-31
    android roi
  • 怎么使用Python实现windows倒计时锁屏功能
    这篇文章主要介绍了怎么使用Python实现windows倒计时锁屏功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python实现windows倒计时锁屏功能文章都会有所收获,下面我们一起来看看吧。实...
    99+
    2023-07-06
  • Win8文件拖放功能使用介绍及自定义锁定屏幕功能开启方法
    跟着Windows 8 Build 7955泄露的时间越来越长,也有越来越多的新功能浮出水面,今天就来为大家先容今天刚刚发现的两个Windows 8功能。 首先,是Windows 8资源管理器的一个新的拖放...
    99+
    2022-06-04
    功能 自定义 拖放
  • Win8.1系统怎么禁用锁屏功能 关闭Win8.1锁屏方法教程图解
    锁屏是Win8/Win8.1系统的一个新功能,在开机以及长时间离开电脑屏幕后,Win8就会进入锁屏界面。Win8/Win8.1锁屏界面提供了天气、日历以及通知信息等东西,对于有些用户来说,可能比较实用,但还有一些追求极简...
    99+
    2023-06-03
    Win8.1 禁用锁屏 锁屏 系统 教程 方法
  • 腾讯云服务器怎样使用手机控制屏幕
    腾讯云服务器是一种基于云的服务器,可以通过手机控制屏幕。以下是使用方法: 打开腾讯云服务器:在电脑上登录腾讯云服务帐户并进入服务器主界面。 在主界面右上角的菜单栏中选择“设置”,然后在“设置”页面中选择“控制面板”或者“腾讯云控制面板”...
    99+
    2023-10-26
    腾讯 屏幕 服务器
  • 云服务器怎么远程控制手机屏幕使用方法
    远程控制手机屏幕使用需要在服务器上运行客户端,以下是一些远程控制手机屏幕的方法: 打开手机控制台或应用程序,例如QQ、微信。 输入要访问的设备的IP地址。例如,IP地址是192.168.1.10。 找到要访问的设备的应用程序。右键单击该...
    99+
    2023-10-27
    使用方法 远程控制 手机屏幕
  • 云服务器怎么远程控制手机屏幕使用时间
    如果您想远程控制云服务器中的设备屏幕使用时间,可以按照以下步骤进行: 首先,需要确定您想要操作的云服务器的服务器端软件版本,如果您已经安装了操作系统的控制面板,可以在控制面板上找到“网络和共享中心”选项卡,双击进入网络和共享中心。 在网...
    99+
    2023-10-27
    远程控制 手机屏幕 服务器
  • 腾讯云服务器怎么远程控制手机屏幕使用
    腾讯云服务器可以远程控制手机屏幕,具体步骤如下: 登录腾讯云控制中心(https://cloudcenter.tencent.com/):选择需要远程控制的设备,然后点击“远程控制”按钮。 配置远程控制权限:点击“远程控制”按钮,在弹出...
    99+
    2023-10-27
    腾讯 远程控制 手机屏幕
  • Win8分屏怎么用 Win8分屏功能使用图解
    我们知道Win8系统有一个非常有趣的分屏功能,使用Win8的分屏功能可以实现一边逛应用商店一边和好友聊天等等,也可以一边玩游戏,一边聊QQ啥的,是一个很实用的Win8小功能。不过很多Win8用户都不知道Wi...
    99+
    2022-06-04
    功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作