微信小程序-动态验证码

  • 一、创建自定义组件verification-code
  • 二、在index页面使用

一、创建自定义组件verification-code

verification-code.js

// pages/test1/verificationQr/verificationQr.js
var ctx;
Component({/*** 组件的属性列表*/properties: {width:{type: Number,value: 150},height: {type: Number,value: 48},count:{type:Number,value:4},fontSize: {type: Number,value: 34},fontFamily:{type: String,value: "SimHei"}},/*** 组件的初始数据*/data: {text: '',count: 4,width:90,height:28,fontSize:30,fontFamily:"SimHei"},ready() {this.setData({count:this.properties.count,width:this.properties.width,height:this.properties.height,fontSize:this.properties.fontSize,fontFamily:this.properties.fontFamily})this.drawPic(this)},/*** 组件的方法列表*/methods: {crash(){this.drawPic(this)},/**绘制验证码图片**/drawPic(that) {ctx = wx.createCanvasContext('canvas',this);/**绘制背景色**/ctx.fillStyle = randomColor(180, 240); //颜色若太深可能导致看不清ctx.fillRect(0, 0, that.data.width, that.data.height)/**绘制文字**/var arr;var text = '';var str = 'ABCEFGHJKLMNPQRSTWXY123456789';for (var i = 0; i < that.data.count; i++) {var txt = str[randomNum(0, str.length)];ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色ctx.font = randomNum(20, 26) + 'px SimHei'; //随机生成字体大小var x = 10 + i * 20;var y = randomNum(25, 30);var deg = randomNum(-30, 30);//修改坐标原点和旋转角度ctx.translate(x, y);ctx.rotate(deg * Math.PI / 180);ctx.fillText(txt, 5, 0);text = text + txt;//恢复坐标原点和旋转角度ctx.rotate(-deg * Math.PI / 180);ctx.translate(-x, -y);}/**绘制干扰线**/for (var i = 0; i < 4; i++) {ctx.strokeStyle = randomColor(40, 180);ctx.beginPath();ctx.moveTo(randomNum(0, that.data.width), randomNum(0, that.data.height));ctx.lineTo(randomNum(0, that.data.width), randomNum(0, that.data.height));ctx.stroke();}/**绘制干扰点**/for (var i = 0; i < 20; i++) {ctx.fillStyle = randomColor(0, 255);ctx.beginPath();ctx.arc(randomNum(0, that.data.width), randomNum(0, that.data.height), 1, 0, 2 * Math.PI);ctx.fill();}ctx.draw(false, function() {console.log(text)that.triggerEvent('result', { text });that.setData({text: text,})})}}
})
function randomNum(min, max) {return Math.floor(Math.random() * (max - min) + min);
}
/**生成一个随机色**/
function randomColor(min, max) {var r = randomNum(min, max);var g = randomNum(min, max);var b = randomNum(min, max);return "rgb(" + r + "," + g + "," + b + ")";
}

verification-puzzle.json

{"component": true,"usingComponents": {}
}

verification-puzzle.wxml

<canvas style="width:{{width}}px;height:{{height}}px" canvas-id="canvas" bindtap='crash'></canvas>

二、在index页面使用

index.wxml

<verification-code id="verification"></verification-code>
<view bindtap="crash">刷新</view>

index.js

// pages/test/test/test.js
Page({/*** 页面的初始数据*/data: {},crash() {this.verification.crash()},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {this.verification = this.selectComponent('#verification')},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

index.json

{"usingComponents": {"verification-code": "/components/verification-code/verification-code"}
}

微信小程序-动态验证码相关推荐

  1. 学习使用微信小程序动态获取当前时间并实时跳动

    学习使用微信小程序动态获取当前时间并实时跳动 1.修改util.js 2..js函数构造 3.wxml页面显示固定时间 1.修改util.js const formatTime = date => ...

  2. 微信小程序动态添加view

    微信小程序动态添加view //index.html<button bindtap='clickMe'> 添加</button> <input type='input' ...

  3. 微信小程序 动态添加类名

    微信小程序 动态添加类名和vue的语法差不多,一个小测试 <view class="list-top"> <view data-num="1" ...

  4. 微信小程序动态设置tab-bar

    微信小程序动态设置tab-bar(自定义) 配置自定义tab-bar的方法这里省略,可以参考官方文档 动态设置tab-bar 需求:根据权限判断底部tab-bar显示内容 例如普通用户这里不显示赛事t ...

  5. 微信小程序-动态获取appid

    微信小程序动态获取appid 使用wx.getAccountInfoSync();方法. 具体实现方法如下: var accountInfo = wx.getAccountInfoSync(); va ...

  6. 微信小程序,验证码输入框

    微信小程序,验证码输入 效果预览 写了个小程序验证码输入的小demo,用的方法是比较猥琐的隐藏input框,输入内容绑定的方法 wxml代码 <view class="wx-page- ...

  7. 微信小程序动态修改头部title

    微信小程序动态修改头部title 1,正常我们设置title的名字是这么设置的 {"navigationBarTitleText": "详情", } 2.在js ...

  8. 微信小程序动态修改样式

    前言 微信小程序动态修改样式:循环数组显示到页面,点击单独的按钮变换单独样式 一.wxml <view class="fb_tips"wx:for="{{arr11 ...

  9. 微信小程序--动态设置导航栏颜色

    微信小程序--动态设置导航栏颜色 既然要动态设置导航栏颜色,估计 自定义导航栏 也跑不了 关于动态设置导航栏颜色,微信小程序官方文档给出了一个API: wx.setNavigationBarColor ...

最新文章

  1. 3D目标检测深度学习方法数据预处理综述
  2. 其中:ping.netstat,tracert 是最关键的三个.每年都有!~
  3. Coursera课程Python for everyone:Quiz: Regular Expressions
  4. Kubernetes 2018 年度简史
  5. mysql语法与decode语法的不同
  6. Nginx 设置,设置已经解析的域名,在nginx中没有定义相应server时的默认访问
  7. HTML+CSS+JS实现 ❤️ 团队人物图片蜂巢布局❤️
  8. 续--Flask, Django - 区别
  9. 单元测试——Winfrom
  10. 当MVP与阿里云一起踏上西行远征——阿里云MVP“戈壁之路”徒步记行
  11. mysql映射mapper_Mybatis中Mapper映射文件使用详解
  12. mysql优化教程_Mysql优化一
  13. java开发环境实验总结_20155229 实验一《Java开发环境的熟悉》实验报告
  14. 评副高考计算机英语能加分吗,19类人员评副高以下职称时不用再考外语
  15. JS 下拉菜单内容交换
  16. 面向未来,镭速助力企业构建文件安全外发新生态
  17. 云计算的定义是什么?
  18. powerquery分组_Power Query 神奇的分组统计1
  19. 塔式服务器系统配置,联想TD350塔式服务器系统安装配置注意事项
  20. 项目经理和团队如何产生距离美?

热门文章

  1. c语言求出字符串最长单词,C语言 在字符串中找到最长单词
  2. 2020大二HTML5期末课业
  3. Android中实现ImageView圆角化的几种 方式
  4. 计算机如何连接发票打印机,惠普打印机怎么连接电脑详细步骤,发票打印机怎么添加-...
  5. vue搜索(不区分大小写)通用
  6. 初创企业如何做高效持续交付
  7. c语言编译器字体怎么变大,c语言中怎么将个别字体放大,如9,将其放大,怎么编程呢?...
  8. VSCode中自定义的snippets对h文件无效的解决办法
  9. 【Python】在字符串的头尾做文本匹配
  10. 【Linux进程概念】冯 诺依曼体系结构 操作系统 进程 fork 进程状态 优先级