微信小程序自定义扫码功能界面的实现代码


Posted in Javascript onJuly 02, 2020

小程序的一个扫码页面,扫码界面一直开着,同时可以处理其他功能,如下:

微信小程序自定义扫码功能界面的实现代码

由于直接调用微信的scanCode,无法自定义界面,所以只能使用原生组件camera,完成这个功能,关于扫描框的四个角的图片,就自己画一下吧,中间的移动横线,使用了小程序的动画功能,在原生camera组件上,覆盖需要用到cover-view和cover-image,同时加入了提示音

/**scan.wxss**/
.scan-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  background-color: #B9BEC4;
  position: fixed;
  align-items: center;
  justify-content: space-around;
}
 
.scan-border {
  width: 94%;
  height: 94%;
  border: 6rpx solid #08FDFE;
  border-radius: 10rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}
 
.scan-camera {
  width: 500rpx;
  height: 500rpx;
  border-radius: 6rpx;
  margin: 30rpx;
}
 
.cover-corner {
  width: 80rpx;
  height: 80rpx;
  position: absolute;
}
 
.cover-left-top {
  left: 0;
  top: 0;
}
 
.cover-right-top {
  right: 0;
  top: 0;
}
 
.cover-left-bottom {
  left: 0;
  bottom: 0;
}
 
.cover-right-bottom {
  right: 0;
  bottom: 0;
}
 
.scan-animation {
  position: absolute;
  top: -10rpx;
  left: 10rpx;
  width: 480rpx;
  height: 8rpx;
  background-color: #08FDFE;
  border-radius: 50%;
}
<!--scan.wxml-->
<view class="scan-view">
  <view class='scan-border'>
    
    <camera class='scan-camera' mode="scanCode" binderror="cameraError" bindscancode='scancode' frame-size='large'>
      <cover-image class='cover-corner cover-left-top' src='/images/left-top.png'></cover-image>
      <cover-image class='cover-corner cover-right-top' src='/images/right-top.png'></cover-image>
      <cover-image class='cover-corner cover-left-bottom' src='/images/left-bottom.png'></cover-image>
      <cover-image class='cover-corner cover-right-bottom' src='/images/right-bottom.png'></cover-image>
      
      <cover-view class='scan-animation' animation="{{animation}}"></cover-view>
    </camera>
    <!-- 这里可以处理其他内容 -->
  </view>
</view>
// scan.js
// 移动动画
let animation = wx.createAnimation({});
// 提示音
let innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.src = '/images/beep.mp3'
 
Page({
  data: {
    
  },
  onLoad: function () {
    
  },
  onShow(){
    this.donghua()
  },
  donghua(){
    var that = this;
    // 控制向上还是向下移动
    let m = true
    
    setInterval(function () {
      if (m) {
        animation.translateY(250).step({ duration: 3000 })
        m = !m;
      } else {
        animation.translateY(-10).step({ duration: 3000 })
        m = !m;
      }
 
      that.setData({
        animation: animation.export()
      })
    }.bind(this), 3000)
  },
  scancode(e){
    // 提示音
    innerAudioContext.play()
    // 校验扫描结果,并处理
    let res = e.detail.result
  }
})

总结

到此这篇关于微信小程序自定义扫码功能界面的实现代码的文章就介绍到这了,更多相关微信小程序自定义扫码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript下IE与FF兼容函数收集
Sep 17 Javascript
Js 去掉字符串中的空格(实现代码)
Nov 19 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
JavaScript知识点整理
Dec 09 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
Nov 27 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
JavaScript 数组去重详解
Sep 15 Javascript
JS字符串和数组如何实现相互转化
Jul 02 #Javascript
Vue父子之间值传递的实例教程
Jul 02 #Javascript
JS出现404错误原理及解决方案
Jul 01 #Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 #Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 #Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 #Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 #Javascript
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
php实现微信发红包功能
2018/07/13 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
JS实现简单打字测试
2020/06/24 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
详解 Python 与文件对象共事的实例
2017/09/11 Python
Python 字符串池化的前提
2020/07/03 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
中国旅游网站:途牛旅游网
2019/09/29 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
学校门卫工作职责
2013/12/07 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers