canvas手势解锁思路

参考:http://web.jobbole.com/90970/

基本要求是这样的:将密码保存到 localStorage 里,开始的时候会从本地读取密码,如果没有就让用户设置密码,密码最少为五位数,少于五位要提示错误。需要对第一次输入的密码进行验证,两次一样才能保持,然后是验证密码,能够对用户输入的密码进行验证。

具体思路如下:

一:新建画布,指定宽度,每行排列3个圆,计算圆的半径,根据半径确定圆心。用arc(x,y,r,0,2*PI,true)函数画圆;

二:初始化密码,如果window.localStorage.getItem("HandLock")存在密码,则切换到model=1,验证密码;否则为{model:2},设置密码;

三:监听touchstart事件,touchmove事件,touchend事件

touchstart事件:获取触点的相对位置,清空touchedCircle数组,判断触点是否在圆内,若在添加在touchedCircle数组中,同时从restCirle数组中删除,每次是对restCirle数组进行
遍历,防止重复添加,然后设置touchFlag和redraw为true。

touchmove事件(添加节流函数):通过一个变量保存触点位置,判断触点的touchFlag属性,如果为true则:如果touchedCircle的长度大于等于1,则圆心与触点连线&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在uniapp中使用canvas实现手势缩放可以通过以下步骤实现: 1. 在canvas的绘制方法中获取手势事件的信息,包括手势类型、起始点、移动距离等信息。 2. 在手势的处理方法中计算缩放比例,并根据缩放比例对canvas进行缩放。 下面是一个简单的示例代码: ```html <template> <canvas @touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd" style="width: 100%; height: 100%;" ></canvas> </template> <script> export default { methods: { touchStart(event) { if (event.touches.length === 2) { // 计算两个手指之间的距离 this.distance = Math.sqrt( (event.touches[0].clientX - event.touches[1].clientX) ** 2 + (event.touches[0].clientY - event.touches[1].clientY) ** 2 ); } }, touchMove(event) { if (event.touches.length === 2) { // 计算当前两个手指之间的距离 const currentDistance = Math.sqrt( (event.touches[0].clientX - event.touches[1].clientX) ** 2 + (event.touches[0].clientY - event.touches[1].clientY) ** 2 ); // 计算缩放比例 const scale = currentDistance / this.distance; // 更新缩放比例 this.scale *= scale; // 更新起始点 this.startX = (this.startX + event.touches[0].clientX) / 2; this.startY = (this.startY + event.touches[0].clientY) / 2; // 重新绘制canvas this.draw(); } }, touchEnd() { // 清空手势信息 this.distance = 0; }, draw() { // 获取canvas对象 const ctx = uni.createCanvasContext("myCanvas", this); // 缩放canvas ctx.scale(this.scale, this.scale); // 绘制图形 ctx.fillRect(this.startX, this.startY, 100, 100); // 显示canvas ctx.draw(); }, }, data() { return { startX: 0, // 起始点的x坐标 startY: 0, // 起始点的y坐标 scale: 1, // 缩放比例 distance: 0, // 两个手指之间的距离 }; }, mounted() { // 绘制canvas this.draw(); }, }; </script> ``` 在上面的示例代码中,我们使用了uniapp提供的canvas API,通过scale方法实现缩放。在touchMove方法中,根据当前两个手指之间的距离计算缩放比例,并更新缩放比例和起始点的坐标。最后,在draw方法中调用scale方法对canvas进行缩放,然后绘制图形并显示canvas
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值